要求:設計乙個演算法層序遍歷二叉樹(同一層從左到右訪問)。
我寫了乙個演算法:用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。
status hierarchybitree(bitree t, status (*visit)(telemtype e))
destroyqueue(q); // 釋放佇列空間
return ok;
}演算法分析:假設t有n個節點。因為本演算法中基本操作是visit(p->data),則時間複雜度為o(n);由於用乙個佇列儲存當前孩子的節點,所以佇列占用的額外空間為該二叉樹的葉子節點數,最好情況是一棵只有左分支或只有右分支的單邊樹,此時占用空間最少,僅為1。最壞情況是該樹是滿二叉樹,此時占用的空間最多為(n+1)/2。
文章出處:
二叉樹層序遍歷 求二叉樹的層序遍歷
給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...
二叉樹層序遍歷
主要流程 確定root非空 根指標進佇列 佇列非空就一直迴圈 依次掃瞄目前佇列中所有元素 新增的不算 從佇列取出第一元素 將值放入結果vector中 判斷左右子節點非空,並依次入隊 將本次結果放入二維陣列中 如果需要按層逆序輸出的話,在這裡將二維結果倒排一下 返回二維結果 vector levelo...
層序遍歷二叉樹
給定一棵二叉樹,要求分層遍歷該二叉樹,即從上到下按層次訪問該樹,每一層單獨輸出一行,每一層要求訪問的順序為從左到右。我們在遍歷的過程中將該層節點的孩子節點壓入乙個佇列,這樣就可以實現從上到下一層一層地遍歷該二叉樹。c 的程式描述如下 cpp view plain copy print?void pr...