题目描述
解题思路
- 主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走
如果我们熟悉深度搜索优先算法的话,很容易想到用此方法来解这道题。
我们从根节点开始向下遍历,如果遇到空节点,返回0;否则继续遍历左右节点,其最大深度为左右子树深度的最大值
代码实现
func maxDepth(root *TreeNode) int {
if root == nil {
return 0
}
lhight := maxDepth(root.Left)
rhight := maxDepth(root.Right)
return max(lhight, rhight) + 1
}
func max(x int, y int) int {
if x > y {
return x
}else {
return y
}
}