二叉樹的層次遍歷問題
層次遍歷的問題本質是廣度優先搜尋,然而此題不僅需要按層訪問,還需要對不同的層次做出區分。這裡既然要以陣列的形式作為返回值,就直接考慮按陣列長度來區分層次。
當訪問完某一層的元素時,當前待訪問佇列的長度恰好就是下一層的長度,初始層為根結點。/**
* definition for a binary tree node.
* struct treenode
* };
*/class solution
rtn.push_back(temp);
}return rtn;}};
除了上述求解之外,其實還有一些比較好的區分層次的的方法,譬如使用分隔符,在開始某一層的訪問時,在佇列尾部插入分隔符,當訪問到它時即表明當前層遍歷完畢。這裡給出偽**實現以供參考。
queue = [node]
while queue.length != 0
queue.push "$"
while(true)
item = queue.front
break if item == '$'
visit(item)
queue.push(item.left) if item.left != null
queue.push(item.right) if item.right != null
第十周 層次遍歷演算法的驗證
檔名稱 ouyangdingtian.cpp 作 者 王百琛 完成日期 2017年11月2日 版 本 號 v1.0 問題描述 層次遍歷演算法的驗證 輸入描述 一棵樹 程式輸出 先序,中序,後序演算法的三種輸出 樹的演算法庫的引用部分 btree.h btree.cpp include include...
第11周 專案1 層次遍歷演算法的驗證
檔名稱 1.pp 完成日期 2015年11月9日 問題描述 層次遍歷演算法的驗證 include include define btree h included define maxsize 100 typedef char elemtype typedef struct node btnode v...
第十周專案1(1) 層次遍歷演算法的驗證
btree.h ifndef btree h included define btree h included define maxsize 100 typedef char elemtype typedef struct node btnode void createbtnode btnode b...