樹(6)二叉樹層序遍歷

2021-10-08 23:35:12 字數 628 閱讀 7414

q:

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,(從左到右,一層一層地遍歷)

例如:給定的二叉樹是,3/

9 20

/ 15 7

該二叉樹層序遍歷的結果是

[[3],

[9,20],

[15,7]]a:

(使用乙個變數level來標記當前的深度,初始化帶入0,表示根結點所在的深度。

由於需要返回的是乙個二維陣列res,開始時我們又不知道二叉樹的深度,不知道有多少層,所以無法實現申請好二維陣列的大小,只有在遍歷(level+1)的過程中不斷的增加。

那麼我們什麼時候該申請新的一層了呢,當level等於二維陣列的大小我們新建乙個空層,繼續往裡面加數字)

為什麼不是level大於長度?

答:孩子的level+1的確比父節點的level大1,但是陣列的長度並不等於父節點的level,它們的關係是size=父.level+1

孩子的(level+1)-1=父親的level=size-1

level+1是新的level,那麼level=size

綜上,已經遍歷的層數比深度大1。

二叉樹層序遍歷 求二叉樹的層序遍歷

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 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...