zoukankan      html  css  js  c++  java
  • LeetCode | Minimum Depth of Binary Tree

    Given a binary tree, find its minimum depth.

    The minimum depth is the number of nodes along the shortest path from the root node down to the nearest leaf node.

    /**
     * Definition for binary tree
     * public class TreeNode {
     *     int val;
     *     TreeNode left;
     *     TreeNode right;
     *     TreeNode(int x) { val = x; }
     * }
     */
    //注意题目给出的二叉树深度的概念:根节点到“叶子”节点的路径长。
    //对{root!=null, left=right=null}的单节点树,其深度为1 [注:也有教材把单节点树的深度定义为0,leetcode定义为1,否则不accepted]
    
    //在求最小深度时,要避免那些只有单个子节点的节点的干扰,因为其为null的子节点会返回0,在取小比较时可能造成其为叶子节点的假象
    //而在求最大深度时,单个子节点为空的非叶子节点不会干扰到结果,因为其返回的0在比较大小取大时会被淘汰,从而间接证明其非叶子节点
    public class Solution {
        public int minDepth(TreeNode root) {
            if (root == null) return 0;
            
            int minleft = minDepth(root.left);
            int minright = minDepth(root.right);
            
            if(minleft == 0) return minright+1;  //左子节点为null,则其不是叶子节点,只是深度路径上的中间点而已
            if(minright == 0) return minleft+1;
            
            int depth = minleft<=minright?minleft:minright;
            return depth+1;
        }
    }






  • 相关阅读:
    Sum Root to Leaf Numbers
    Sum Root to Leaf Numbers
    Sort Colors
    Partition List
    Binary Tree Inorder Traversal
    Binary Tree Postorder Traversal
    Remove Duplicates from Sorted List II
    Remove Duplicates from Sorted List
    Search a 2D Matrix
    leetcode221
  • 原文地址:https://www.cnblogs.com/dosmile/p/6444483.html
Copyright © 2011-2022 走看看