zoukankan      html  css  js  c++  java
  • 二叉树的最小深度

    二叉树的最小深度

    给定一个二叉树,找出其最小深度。
    最小深度是从根节点到最近叶子节点的最短路径上的节点数量。
    说明: 叶子节点是指没有子节点的节点。

    示例

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

        3
       / 
      9  20
        /  
       15   7
    

    题解

    /**
     * Definition for a binary tree node.
     * function TreeNode(val) {
     *     this.val = val;
     *     this.left = this.right = null;
     * }
     */
    /**
     * @param {TreeNode} root
     * @return {number}
     */
    var minDepth = function(root) {
        if(!root) return 0;
        if(root.left === null && root.right !== null) return minDepth(root.right) + 1;
        if(root.right === null && root.left !== null) return minDepth(root.left) + 1;
        var lh = minDepth(root.left);
        var rh = minDepth(root.right);
        return Math.min(lh, rh) + 1;
    };
    

    思路

    使用深度优先搜索的方法,遍历整棵树对比最小高度的子树并记录,返回最小高度子树的高度,对于每一个非叶子节点,只需要分别计算其左右子树的最小叶子节点深度即可,注意题目中定义最小深度是从根节点到最近叶子节点的最短路径上的节点数量,且叶子节点是指没有子节点的节点,所以有两个节点的二叉树的最小深度是2。首先如果节点没有定义,那么就认为其高度为0并返回0,对于题目中的要求最小深度是从根节点到最近叶子节点的最短路径上的节点数量,所以在左子树不存在右子树存在的情况下,返回右子树的最小深度+1,如果在右子树不存在左子树存在的情况下,返回左子树的最小深度+1,然后取得左子树的最小深度与右子树的最小深度,比较大小,返回较小子树深度+1

    每日一题

    https://github.com/WindrunnerMax/EveryDay
    

    参考

    https://leetcode-cn.com/problems/minimum-depth-of-binary-tree/
    
  • 相关阅读:
    倒序数组的算法
    SQL 日期操作函数
    sp_executesql 练习
    c#编译器对byte类型的一些规则
    角度在excel中如何输入并使其能计算
    5天学会fx5800计算器测量编程(二) fx5800函数学习
    5天学会fx5800计算器测量编程(二) fx5800语法学习
    如何快速的将大地坐标系导入进施工结构的cad平面图纸中
    CAD中批量导入坐标和点号的方法命令
    5天学会fx5800计算器测量编程(一)
  • 原文地址:https://www.cnblogs.com/WindrunnerMax/p/13542995.html
Copyright © 2011-2022 走看看