首先定義佇列的結構體和方法。佇列使用二維指標儲存指向樹節點的指標。i,j為指向佇列開頭、結尾元素的游標。
這裡的二叉樹使用節點進行表示而不是陣列。節點結構如下:struct queuebtree
;typedef
struct queuebtree queuebtree;
queuebtree * initqueuebtree()
void freequeuebtree(queuebtree *btree) //釋放分配空間
void addqueuebtree(queuebtree *btree, btreenode *node) //加入佇列
btreenode * delqueuebtree(queuebtree *tree)
int emptyqueuebtree(queuebtree *tree)
層序遍歷輸出二叉樹。struct btreenode
;typedef
struct btreenode btreenode;
總結:當需要層序便利其他非二叉樹時,將節點結構、佇列指標型別、尋找孩子節點的方式進行更改即可。void iterator(btreenode *root)
if(p->rchilds != null)
}freequeuebtree(queue);
}
二叉樹層序遍歷 求二叉樹的層序遍歷
給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...
層序遍歷二叉樹
要求 設計乙個演算法層序遍歷二叉樹 同一層從左到右訪問 我寫了乙個演算法 用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。status hierarchybitree bitree t,status visit telemtype e destroyqueue q 釋放佇列空間 return...
二叉樹層序遍歷
主要流程 確定root非空 根指標進佇列 佇列非空就一直迴圈 依次掃瞄目前佇列中所有元素 新增的不算 從佇列取出第一元素 將值放入結果vector中 判斷左右子節點非空,並依次入隊 將本次結果放入二維陣列中 如果需要按層逆序輸出的話,在這裡將二維結果倒排一下 返回二維結果 vector levelo...