資料結構演算法判斷兩棵二叉樹是否等價

時間 2021-06-13 06:40:23

1樓:網際網路_逸白

#include

#include

#include

typedef char datatype;

typedef struct node

*bitree;

bitree createtree(bitree root)

root=(bitree)malloc(sizeof(bitree));

root->data=s;

root->lchild=createtree(root->lchild); /* 遞迴 */

root->rchild=createtree(root->rchild); /* 遞迴 */

return root;

}return root;

}int comparetree(bitree a,bitree b)

else return 0; //一種null,一種不null沒考慮,直接返回0就好。

}int main()

沒輸出主要是需要在兩個輸入之間加上getchar(),還有判斷是否等價少了一部分。

2樓:闊氣剋剋

我現在感覺你這個輸入一棵樹的過程就需要輸入很多個@了,這樣構建一棵樹會不會有點兒太複雜讓自己都不知道構建的樹的形態了,而且看你printf的內容你似乎認為只要輸入一個@就能完成一棵樹的輸入??

遞迴比較的過程看起來是正確的。

資料結構:二叉樹判定題,求大神指點,謝謝!!! 20

3樓:

1. 設某雜湊表的長度為100,雜湊函式h(k)=k % p,則p通常情況下最好選擇( b )。

(a) 99 (b) 97 (c) 91 (d) 93 不知道該怎麼做,給講講吧~

2. 設一棵三叉樹中有50個度數為0的結點,21個度數為2的結點,則該二叉樹中度數為3的結點數有______個。 弄不懂~~~

3. 下面程式段的功能是實現一趟快速排序,請在下劃線處填上正確的語句。 書上有,看的也不太理解,再給講講while裡面的語句含義吧

struct record ;

void quickpass(struct record r, int s, int t, int &i)

while (___i

}______r[i]=x___________;

}4.設二叉樹的先序遍歷序列和後序遍歷序列正好相反,則該二叉樹滿足的條件是( d )。

(a) 空或只有一個結點 (b) 高度等於其結點數

(c) 任一結點無左孩子 (d) 任一結點無右孩子

我的答案是b, 左,右單支數 遍歷情況不都一樣麼??

5. 設一組權值集合w=,則由該權值集合構造的哈夫曼樹中帶權路徑長度之和為(d )。

(a) 20 (b) 30 (c) 40 (d) 45

我的答案是 48 怎麼能算錯了,什麼意思了?~~ 呵呵

6.設一棵二叉樹的先序序列和後序序列,則能夠唯一確定出該二叉樹的形狀。( 錯 )

舉個例子, 左,右單支數 就能判斷 是錯的 對不對?

資料結構與演算法 二叉樹交換左右子樹演算法

4樓:匿名使用者

傳入樹的根結點即可:

exchangelr(&root); //root為樹的根節點

void exchangelr(treenode *root)

5樓:id雞蛋炒韭菜

原來節點結構體抄:

typedef struct

node;

現在從新定義bai一個結構

typedef struct

newnode;

然後用新du

樹的根指zhi向原樹的根

node* poldtree; 老樹

newnode* pnewtree = (newnode*)poldtree;

這樣省的交換了dao,省事吧 -_,-