给定一棵二叉树的根节点 root
,请找出该二叉树中每一层的最大值。
示例1:
输入: root = [1,3,2,5,3,null,9]
输出: [1,3,9]
示例2:
输入: root = [1,2,3]
输出: [1,3]
提示:
- 二叉树的节点个数的范围是
[0,104]
-231 <= Node.val <= 231 - 1
题解:
递归法(深度优先):
// 时间复杂度:O(n)
// 空间复杂度:O(n)
func largestValues(root *TreeNode) []int {
var result []int
if root == nil {
return result
}
depth := 0
var order func(node *TreeNode, depth int)
order = func(node *TreeNode, depth int) {
if node == nil {
return
}
if depth >= len(result) {
result = append(result, node.Val)
} else if result[depth] < node.Val {
result[depth] = node.Val
}
order(node.Left, depth+1)
order(node.Right, depth+1)
}
order(root, depth)
return result
}
评论前必须登录!
注册