题目:
给定一个二叉树,找出其最小深度。
二叉树的最小深度为根节点到最近叶子节点的距离。
样例
给出一棵如下的二叉树:
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; } }
总耗时: 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;