树的高度/深度
一句话说明
树的高度就是“从当前节点往下还能走多远”,本质上是一个后序问题。
(附件 bfs-layer-traversal.gif 未随站点发布)
先分清概念
height(node):当前节点向下到最深叶子的长度depth(node):根节点到当前节点的长度- 刷题里说“最大深度”,通常就是整棵树的高度
Go 代码:最大深度
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
left := maxDepth(root.Left)
right := maxDepth(root.Right)
if left > right {
return left + 1
}
return right + 1
}Go 代码:最小深度
func minDepth(root *TreeNode) int {
if root == nil {
return 0
}
if root.Left == nil {
return minDepth(root.Right) + 1
}
if root.Right == nil {
return minDepth(root.Left) + 1
}
left := minDepth(root.Left)
right := minDepth(root.Right)
if left < right {
return left + 1
}
return right + 1
}易错点
最小深度最容易写错
单子树不能直接取
min(left, right) + 1,因为空分支不是叶子。