1樓:
n和b都能改,n控制二叉樹的層數,b控制角度,分叉角度的一般.程式中的a似乎沒用到
n=3,b=pi/6時影象如下
2樓:我行我素
function tree(n)
a=pi/n;b=pi/n;
x1=0;y1=0;
x2=0;y2=1;
plot([x1,x2],[y1,y2])hold on
[x,y]=tree1(x1,y1,x2,y2,a,b);
hold on
w=tree2(x,y);
w1=w(:,1:4);
w2=w(:,5:8);
w=[w1;w2];
for k=1:n
for i=1:2^k
[x,y]=tree1(w(i,1),w(i,2),w(i,3),w(i,4),a,b);
w(i,:)=tree2(x,y);
endw1=w(:,1:4);
w2=w(:,5:8);
w=[w1;w2];
endfunction [x,y]=tree1(x1,y1,x2,y2,a,b)
l=sqrt((x2-x1)^2+(y2-y1)^2);
if (x2-x1)==0
a=pi/2;
else if (x2-x1)<0
a=pi+atan((y2-y1)/(x2-x1));
else
a=atan((y2-y1)/(x2-x1));
endend
x3=x2+l*2/3*cos(a+b);
y3=y2+l*2/3*sin(a+b);
x4=x2+l*2/3*cos(a-b);
y4=y2+l*2/3*sin(a-b);
a=[x3,x2,x4];
b=[y3,y2,y4];
plot(a,b)
axis equal
hold on
x=[x2,x3,x4];
y=[y2,y3,y4];
function w=tree2(x,y)a1=x(1);b1=y(1);
a2=x(2);b2=y(2);
a3=x(1);b3=y(1);
a4=x(3);b4=y(3);
w=[a1,b1,a2,b2,a3,b3,a4,b4];
資料結構,二叉樹的先序遍歷, 大神幫我看下我用棧編的這個程式**錯了??
求程式 線索二叉樹插入刪除運算,線索二叉樹的插入和刪除
include include malloc.h include windows.h define maxsize 20 規定樹中結點的最大數目 typedef struct nodebithptr bithptr q maxsize 建隊,儲存已輸入的結點的地址 bithptr creattree...
關於遞迴演算法求二叉樹深度演算法,關於求二叉樹深度的遞迴演算法
int height bitree t if 中的n應該是v。其思想是,一個節點的深度是他的兩個子節點中深度的最大值再加上1。這個演算法中u得到其左子數的深度,v獲得右子樹的深度。則這個節點的深度就是u和v中最大的再加上1。要想獲得樹的深度,就先獲得這個樹中根節點的兩個兒子的深度,比較兩個兒子的深度...
求個二叉樹遍歷的VB程式
rebacktree 根據二叉樹的先序遍歷和中序遍歷建立二叉樹。rebacktree1 根據二叉樹的後序序遍歷和中序遍歷建立二叉樹。include stdio.h include stdlib.h typedef struct node node,nodep void midorder nodep ...