• 二叉树最大深度


    题目:

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

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

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

    示例:给定二叉树 [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

     

     

     

  • 相关阅读:
    20220531复盘
    20220606复盘
    20220607复盘
    20220601复盘
    20220608复盘
    re模块
    os模块
    openpyxl模块
    list
    vim配置与操作
  • 原文地址:https://www.cnblogs.com/smallleiit/p/13297539.html
Copyright © 2020-2023  润新知