二叉樹的層序遍歷 判斷完全二叉樹

2021-10-22 11:23:54 字數 1751 閱讀 5685

二叉樹的層序遍歷即,按照層一排一排的讀取節點的值,如下圖,層序遍歷得到的就應該是:「1234567」。

// 建立乙個鍊錶,然後將根節點放到鍊錶中

queue

result =

newlinkedlist

<

>()

; result.

offer

(root)

;// 將頭節點取出並列印,並把它非空的左右子樹放入鍊錶

// 迴圈執行,每次取出頭節點

while

(true

) system.out.

print

(cur.val);if

(cur.left != null)

if(cur.right != null)

}}完全二叉樹概念:完全二叉樹是從滿二叉樹而來的,滿二叉樹即每乙個節點都有兩個子節點或者沒有子節點。

完全二叉樹是指若樹的深度為 n,那麼1 ~ (n-1) 層的節點都達到最大個數,即1 ~ (n-1) 層是滿二叉樹,n 層的節點全都連續排列在靠左邊。

**思路:(分兩個階段來判定)

第一階段–>

每個節點都有兩個子樹,如果某個節點沒有子樹,那麼進入第二階段;如果某個節點只有右子樹沒有左子樹,直接返回false;如果某個節點只有左子樹沒有右子樹,也進入第二階段。

第二階段–>

每個節點都必須沒有子樹,如果遇到有子樹的節點則判定 false。

public

static

boolean

iscompletetree

(treenode root)

// 分為兩個階段判定

// 這個變數為 false ,表示當前是第一階段

// 變數名為 true 表示進入第二階段

boolean islevel2 =

false

;// 利用層序遍歷

queue

queue =

newlinkedlist

<

>()

; queue.

offer

(root)

;while

(true

)// 針對當前節點進行訪問

// 此處的訪問是一系列的邏輯判斷if(

!islevel2)

else

if(cur.left == null && cur.right != null)

else

if(cur.left != null && cur.right == null)

else

}else}}

// 遍歷了整個樹,都沒有找到反例 return false,就 return true

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

給定乙個二叉樹,返回該二叉樹層序遍歷的結果,從左到右,一層一層地遍歷 例如 給定的二叉樹是,該二叉樹層序遍歷的結果是 3 9,20 15,7 示例1 輸入 返回值 1 2 示例2輸入 返回值 1 2,3 4,5 解題思路 重點是如何把在一層的節點放到一起,設定乙個引數專門放一層的節點 class t...

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

給你乙個二叉樹,請你返回其按 層序遍歷 得到的節點值。即逐層地,從左到右訪問所有節點 示例 二叉樹 3,9,20,null,null,15,7 返回其層次遍歷結果 3 9,20 15,7 在用bfs迴圈遍歷時。先記錄現在佇列裡面的元素個數n,n就是此二叉樹這一深度擁有的節點數,然後迴圈n次,把n個節...

層序遍歷二叉樹

要求 設計乙個演算法層序遍歷二叉樹 同一層從左到右訪問 我寫了乙個演算法 用乙個佇列儲存被訪問的當前節點的左右孩子以實現層序遍歷。status hierarchybitree bitree t,status visit telemtype e destroyqueue q 釋放佇列空間 return...