演算法設計周記(八) 層次遍歷

2021-08-09 23:29:50 字數 959 閱讀 9378

二叉樹的層次遍歷問題

層次遍歷的問題本質是廣度優先搜尋,然而此題不僅需要按層訪問,還需要對不同的層次做出區分。

這裡既然要以陣列的形式作為返回值,就直接考慮按陣列長度來區分層次。

/**

* 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...