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

    题目:

    二叉树的最小深度

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

    二叉树的最小深度为根节点到最近叶子节点的距离。

    样例

    给出一棵如下的二叉树:

            1

         /    

       2       3

              /   

            4      5 

    这个二叉树的最小深度为 2

    解题:

    递归求解

    Java程序:

    /**
     * Definition of TreeNode:
     * public class TreeNode {
     *     public int val;
     *     public TreeNode left, right;
     *     public TreeNode(int val) {
     *         this.val = val;
     *         this.left = this.right = null;
     *     }
     * }
     */
    public class Solution {
        /**
         * @param root: The root of binary tree.
         * @return: An integer.
         */
        public int minDepth(TreeNode root) {
            // write your code here
            int res = 0;
            
            return depth(res,root);
        }
        public int depth(int res,TreeNode root){
            if(root==null)
                return 0;
            if(root.left==null && root.right==null)
                return res+1;
            if(root.left!=null && root.right==null)
                return res=depth(res,root.left)+1;
            if(root.left==null && root.right!=null)
                return res=depth(res,root.right)+1;
            int res1 = depth(res,root.left)+1;
            int res2 = depth(res,root.right)+1;
            res = res1>res2?res2:res1;
            return res;
        }
    }
    View Code

     总耗时: 2455 ms

    Python程序:

    """
    Definition of TreeNode:
    class TreeNode:
        def __init__(self, val):
            self.val = val
            self.left, self.right = None, None
    """
    class Solution:
        """
        @param root: The root of binary tree.
        @return: An integer
        """ 
        def minDepth(self, root):
            # write your code here
            if root==None:
                return 0
            if root.left==None and root.right!=None:
                return self.minDepth(root.right) + 1
            if root.left!=None and root.right==None:
                return self.minDepth(root.left) + 1
            return min(self.minDepth(root.right),self.minDepth(root.left)) + 1;
    View Code
  • 相关阅读:
    设计模式总结
    内存模型
    运行时内存
    网络
    iOS安全攻防(十)dump自己的app
    iOS安全攻防(九)使用Theos开发SpringBoard的Tweat
    iOS安全攻防(八)Thoes的Logos简介
    iOS安全攻防(七)使用iOSOpenDev开发SpringBoard的Tweat
    iOS安全攻防(六)使用class-dump导出Frameworks头文件
    iOS安全攻防(五)使用dpkg安装deb到iOS设备
  • 原文地址:https://www.cnblogs.com/theskulls/p/4867275.html
Copyright © 2011-2022 走看看