1樓:匿名使用者
程式仔細看了一下。
關鍵點是在層遍歷的處理上,有一點點小問題。
應該是先壓入當前樹結點的左右子樹,再彈出當前結點。
你卻是先彈出了,那還結點都釋放了,那裡還有結點的左右子樹呢?
修改如下,供參考:
#include
#include
/*樹結點結構體*/
struct tree;
/*佇列*/
struct queue;
/*佇列資訊表*/
struct queuenode;
/*初始化佇列資訊表*/
struct queuenode *init(struct queuenode *s)
/*入隊*/
void in_queue(struct queuenode *s,struct tree *ch)
/*出隊*/
void out_queue(struct queuenode *s)
}/*建立樹*/
struct tree *create(struct tree *tree)
return tree;
}/*層遍歷*/
void levelorder(struct tree *tree)}}
void main()
測試用資料:124##5##36##7##
輸出: 1 2 3 4 5 6 7
2樓:不知詳解
錯誤多的很啊,你的create函式有問題。裡面使用了一個tree變數,但是這個名稱已經用於struct tree型別.你把create函式和insert函式混淆了。
同時輸入函式有問題。
應該寫一個input(struct tree * p)用來輸入值,tree * create(void)用來建立新連結串列,insert(struct tree * p)函式用來在連結串列中插入新成員.
你題目也沒給我不知道你想幹什麼.
二叉樹遍歷,二叉樹遍歷問題?
這個說起來 很煩 不過可以 用遞迴的思想做。因為根為1左4 2 右5 7 3 6 遞迴的思想。再在左子樹的前序中 2 為根 當然 4 就是葉子 再看中序 在右邊。右3 為根 所以子樹的左子樹 還有5 7 右 為6在遞迴。不打了 根結點為1,則左為42,右5736,再看先根序列24 3576 左邊42...
二叉樹遍歷,二叉樹的遍歷到底是怎麼遍歷的啊?
中序 先遍歷左子樹 就是245組成的那棵樹 遍歷245時也是中序 就是 425 然後走根節點 1 然後遍歷右子樹 637 連起來就是4251637 這種問題。多看幾遍書就好了吧 中序是左中右順序遍歷。把每個點都看成頭結點然後左走,遇節點就遍歷左子樹,等左邊空了,就訪問當前節點的父節點,也就是中,寫下...
二叉樹是什麼,什麼是二叉樹?
在電腦科學中,二叉樹是每個節點最多有兩個子樹的樹結構。通常子樹被稱作 左子樹 left subtree 和 右子樹 right subtree 二叉樹常被用於實現二叉查詢樹和二叉堆。二叉樹的每個結點至多隻有二棵子樹 不存在度大於2的結點 二叉樹的子樹有左右之分,次序不能顛倒。二叉樹的第i層至多有2 ...