题目
给定一个二叉树,找出其最大深度。
二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。
说明: 叶子节点是指没有子节点的节点。
示例:
给定二叉树 [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回它的最大深度 3 。
方案一(递归,自顶向下)
/**
* Definition for a binary tree node.
* type TreeNode struct {
* Val int
* Left *TreeNode
* Right *TreeNode
* }
*/
func maxDepth(root *TreeNode) int {
ans := 0
var max_depth = func(node *TreeNode, curr_depth int){}
max_depth = func (node *TreeNode, curr_depth int) {
if node != nil {
if ans < curr_depth { ans = curr_depth }
max_depth(node.Left, curr_depth + 1)
max_depth(node.Right, curr_depth + 1)
}
}
max_depth(root, 1)
return ans
}
方案二(递归,自底向上)
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
if root.Left == nil && root.Right == nil {
return 1
}
return 1 + max(maxDepth(root.Left), maxDepth(root.Right))
}
func max(a, b int) int {
if a > b {
return a
}
return b
}