二叉树最大深度

题目:

给定一个二叉树,找出其最大深度。

二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。

说明: 叶子节点是指没有子节点的节点。

示例:给定二叉树 [3,9,20,null,null,15,7],

    3
/ \
9 20
/ \
15 7

返回它的最大深度 3 。

解题思路:

DFS(深度搜索优先)

主要思路是从图中一个未访问的顶点 V 开始,沿着一条路一直走到底,然后从这条路尽头的节点回退到上一个节点,再从另一条路开始走到底...,不断递归重复此过程,直到所有的顶点都遍历完成,它的特点是不撞南墙不回头,先走完一条路,再换一条路继续走。

如果我们熟悉深度搜索优先算法的话,很容易想到用此方法来解这道题。

我们从根节点开始向下遍历,如果遇到空节点,返回0;否则继续遍历左右节点,其最大深度为左右子树深度的最大值。

 

代码:

 

/**
 * Definition for a binary tree node.
 * type TreeNode struct {
 *     Val int
 *     Left *TreeNode
 *     Right *TreeNode
 * }
 */
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
    }
}

  地址:https://mp.weixin.qq.com/s/VCslbRKytGh2ed-ZptNjhg

 

 

 

posted @ 2020-07-14 10:08  small_lei_it  阅读(176)  评论(0编辑  收藏  举报