二叉樹的層次遍歷 II

2022-06-02 22:51:07 字數 1475 閱讀 7043

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)

例如:給定二叉樹[3,9,20,null,null,15,7],

3

/\ 9

20 /\

157

返回其自底向上的層次遍歷為:

[

[15,7

], [

9,20

], [3]

]

對於樹的遍歷有dfs(深度優先遍歷)和bfs(廣度優先遍歷)

先從根遍歷,然後得到二維陣列,最後再翻轉一下即可

解法一: dfs深度優先搜尋

思想: 以深度為優先順序,從根節點開始一直到達葉子結點,再返回根到達另乙個分支。

可以細分為先序遍歷,中序遍歷和後序遍歷。

遞迴思想,再翻轉

public

class

treenode }//

深度優先遍歷dfs

var result: [[int]] =

func levelorderbottom(_ node: treenode, level: int)

else

if let left =node.left

if let right =node.right

}func levelorderbottom(_ root: treenode?) ->[[int]]

levelorderbottom(tree, level: 0)

let resultarr: [[int]] =result.reversed()

return

resultarr

}

解法二: bfs廣度優先搜尋

思想: 按照高度順序一層一層地訪問,高層的結點會比低層的結點先被訪問到。

相當於層次遍歷--利用佇列的方式,再翻轉

//

廣度優先遍歷

func levelorderbottom(_ root: treenode?) ->[[int]]

//建立佇列

var queue: [treenode] =[tree]

var result: [[int]] =

var nextlevelqueue: [treenode] =

while queue.count != 0

if let right =node.right

}queue.removeall()

queue =nextlevelqueue

nextlevelqueue.removeall()

}let resultarr: [[int]] =result.reversed()

return

resultarr

}

二叉樹層次遍歷II

給定乙個二叉樹,返回其節點值自底向上的層次遍歷。即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷 例如 給定二叉樹 3,9,20,null,null,15,7 3 9 20 15 7 返回其自底向上的層次遍歷為 15,7 9,20 3 definition for a binary tree ...

二叉樹的層次遍歷 II

給出一棵二叉樹,返回其節點值從底向上的層次序遍歷 按從葉節點所在層到根節點所在的層遍歷,然後逐層從左往右遍歷 您在真實的面試中是否遇到過這個題?yes 樣例給出一棵二叉樹,3 9 20 15 7按照從下往上的層次遍歷為 15,7 9,20 3 definition of treenode class...

二叉樹的層次遍歷 II

給出一棵二叉樹,返回其節點值從底向上的層次序遍歷 按從葉節點所在層到根節點所在的層遍歷,然後逐層從左往右遍歷 例1 輸入 輸出 2,3 1 解釋 1 2 3 它將被序列化為 層次遍歷例2 輸入 輸出 15,7 9,20 3 解釋 3 9 20 15 7 它將被序列化為 層次遍歷 definition...