二叉樹建立時的乙個問題

2021-07-06 00:02:28 字數 878 閱讀 9841

typedef struct bitnode

bt;void creat(bt **t)

{ char c;

scanf("%c",&c);

*t = (bt *) malloc(sizeof(bt));

(**t).data=c;                                       //或 (*t)->data = c;

creat(&(*t)->lchild);

creat(&(*t)->rchild);

void main()

bt tree;

creat(&&tree);

為什麼要用雙重指標?

為什麼不是以下的寫法?

void creat(bt *t)

{ char c;

scanf("%c",&c);

t = (bt *) malloc(sizeof(bt));

t->data=c;                                      

creat(&(*t)->lchild);

creat(&(*t)->rchild);

void main()

bt *tree;

creat(tree);

因為是動態建立二叉樹的每個節點,所以malloc寫在了creat裡

*tree是乙個節點

tree是該節點的位址

&tree是該節點的位址的位址

當creat(tree)時

要求傳入*tree節點的指標

可是節點還沒被定義

這個指標沒有指向,是野指標,無法代入函式

好在,這個指標的指標是指向這個tree的,能代入

所以才用雙指標

如何建立乙個二叉樹?

用前序序列來建立乙個二叉樹,但單純用前序序列無法還原乙個二叉樹,我們還需要把空節點加入進去。這是一顆我網上隨便找的二叉樹,它的前序序列是1,2,4,8,9,5,10,11,3,6,12,7 我們加入空節點,用0表示,1,2,4,8,0,0,9,0,0,5,10,0,0,11,0,0,3,6,12,0...

使用C 建立乙個二叉樹

由於在二叉樹的建立過程中,我們需要使用輸入 讀取的值來判定二叉樹是否有左節點或者右節點。因此我們在建立的時候就需要使用指標的引用或者二重指標。我們定義二叉樹的基本結點形式如下所示 typedef int elemtype struct node typedef node node 為了方便理解,我們...

建立二叉樹 後序建立二叉樹

由後序遍歷可知,輸入順序是左結點 右結點 子樹根結點 比如輸入如下樹 ab cde 輸入序列為 e d b c a 思路 使用棧,對左結點和右結點進行壓棧 1.當輸入遇到非 且棧中元素大於等於2,則可以確定乙個小三角樹形,並將這個樹根作為下乙個小三角樹形的乙個子節點 2.當輸入遇到非 但棧中元素小於...