二叉樹的層序遍歷

2021-10-08 06:30:49 字數 823 閱讀 3725

今天來看一道二叉樹的高頻面試題,在面試中,對於樹的考核基本上就是針對二叉樹的一些操作了,比如:二叉樹的前序、中序、後序、層序遍歷,映象二叉樹,對稱二叉樹,二叉樹的第乙個公共父節點,二叉樹的深度的等等。因此,平時碰上二叉樹的題就要多留意一下。

題目描述

輸出一棵二叉樹層序遍歷的結果。

思路

層序遍歷就是從上往下按順序依次遍歷一棵樹。按順序也就是先進先出的規律,因此可以借助乙個輔助佇列,首先將根節點加入佇列,然後迴圈判斷佇列是否為空,在佇列不為空的情況下,首先訪問佇列的首元素,隨後將首元素出列,如果左右子節點存在,則把它的左右子結點按順序加入佇列,如此迴圈下去,直到隊列為空。這裡需要注意的是,在將佇列的首元素彈出之後,就無法訪問到它的子節點,因此需要在隊首結點彈出之前先用乙個臨時結點接住它,隨後使用臨時結點來訪問子節點。

**實現

vector<

int>

printfromtoptobottom

(treenode* root)

queue

> q;

q.push

(root)

;while

(!q.

empty()

)if(tempnode-

>right)

}return res;

}

歡迎加入每日一題打卡活動,每天分享一道面試演算法題及題解。

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

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