Leetcode #102. Binary Tree Level Order Traversal
簡單來說我們要回傳每一層樹的值
ex:
3
/ \
2 10
/ / \
1 8 13
output: [[3],[2,10],[1,8,13]]
防雷
防雷
防雷
大家還記得preOrder嗎?
preOrder是從上到下的走訪,我們只要在DFS的時候,多帶一個層數就可以解掉這題了~
程式:
func levelOrder(root *TreeNode) [][]int {
result := [][]int{}
if root == nil {
return result
}
DFS(&result, root, 0)
return result
}
func DFS(result *[][]int, node *TreeNode, level int) {
if node == nil {
return
}
// 把node的值 加到slice裡面
if len(*result) <= level {
*result = append(*result, []int{node.Val})
} else {
(*result)[level] = append((*result)[level], node.Val)
}
// 層數要+1
DFS(result, node.Left, level+1)
DFS(result, node.Right, level+1)
}