給定乙個二叉樹,返回其節點值自底向上的層次遍歷。 (即按從葉子節點所在層到根節點所在的層,逐層從左向右遍歷)
例如:給定二叉樹[3,9,20,null,null,15,7]
,
3/\ 9
20 /\
157
返回其自底向上的層次遍歷為:
[[15,7
], [
9,20
], [3]
]
對於樹的遍歷有dfs(深度優先遍歷)和bfs(廣度優先遍歷)
先從根遍歷,然後得到二維陣列,最後再翻轉一下即可
解法一: dfs深度優先搜尋
思想: 以深度為優先順序,從根節點開始一直到達葉子結點,再返回根到達另乙個分支。
可以細分為先序遍歷,中序遍歷和後序遍歷。
遞迴思想,再翻轉
publicclass
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...