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
  • 相关阅读:
    LeetCode—-Sort List
    LeetCode——Longest Consecutive Sequence
    LeetCode——single-number系列
    freeswitch源码阅读 之 sofia模块
    freeswitch 内核模块开发
    FreeSwitch B2B 状态转换流程
    freeswitch嵌入python脚本
    freeswitch注册过程分析
    freeswitch对接其它SIP设备
    freeswitch模块之event_socket
  • 原文地址:https://www.cnblogs.com/theskulls/p/4867275.html
Copyright © 2011-2022 走看看