LeetCode 111. Minimum Depth of Binary Tree 题解——Java
2017-03-13 18:20
453 查看
题目链接:https://leetcode.com/problems/minimum-depth-of-binary-tree/#/description
思路:二叉树的最小深度 = min {左子树的最小深度,右子树的做小深度 } + 1 ;使用递归求解。
需要注意的是,求二叉树的最小深度比求二叉树的最大深度稍微复杂一点,有一种情况需要考虑:当根节点只有左子树或者只有右子树时...假设某二叉树只有左子树,右子树为null,我们不能将右子树的深度设置为0,因为这样右子树的深度0将会在min{左子树最小深度, 右子树最小深度}中被选择出来,这样得到的结果是整个二叉树的最小深度为0,但是这个结果是不正确的。这种情况下正确结果是:二叉树的最小深度=左子树的最小深度+1。
Java代码如下:
public class Solution {
public int minDepth(TreeNode root) {
if(root == null){
return 0;
}
int leftMinDepth = minDepth(root.left);
int rightMinDepth = minDepth(root.right);
// 当有一个分支子树为空时
if(leftMinDepth==0){
return rightMinDepth + 1;
} else if(rightMinDepth==0){
return leftMinDepth + 1;
}
return Math.min(leftMinDepth, rightMinDepth) + 1;
}
}
思路:二叉树的最小深度 = min {左子树的最小深度,右子树的做小深度 } + 1 ;使用递归求解。
需要注意的是,求二叉树的最小深度比求二叉树的最大深度稍微复杂一点,有一种情况需要考虑:当根节点只有左子树或者只有右子树时...假设某二叉树只有左子树,右子树为null,我们不能将右子树的深度设置为0,因为这样右子树的深度0将会在min{左子树最小深度, 右子树最小深度}中被选择出来,这样得到的结果是整个二叉树的最小深度为0,但是这个结果是不正确的。这种情况下正确结果是:二叉树的最小深度=左子树的最小深度+1。
Java代码如下:
public class Solution {
public int minDepth(TreeNode root) {
if(root == null){
return 0;
}
int leftMinDepth = minDepth(root.left);
int rightMinDepth = minDepth(root.right);
// 当有一个分支子树为空时
if(leftMinDepth==0){
return rightMinDepth + 1;
} else if(rightMinDepth==0){
return leftMinDepth + 1;
}
return Math.min(leftMinDepth, rightMinDepth) + 1;
}
}
相关文章推荐
- LeetCode 226. Invert Binary Tree 题解 —— Java
- LeetCode108_Convert SortedArray to BinarySearchTree(将有序数组转成二叉排序树) Java题解
- LeetCode题解:Minimum Depth of Binary Tree
- LeetCode题解: Validate Binary Search Tree
- [Leetcode] Binary Tree Level Order Traversal II (Java)
- [Leetcode] Flatten Binary Tree to Linked List (Java)
- LeetCode题解:Binary Tree Preorder Traversal
- [Leetcode] Binary Tree Level Order Traversal (Java)
- [Leetcode] Convert Sorted Array to Binary Search Tree (Java)
- [Leetcode] Maximum Depth of Binary Tree (Java)
- [Leetcode] Balanced Binary Tree (Java)
- LeetCode题解: Construct Binary Tree from Inorder and Postorder Traversal
- [Leetcode] Convert Sorted List to Binary Search Tree (Java)
- LeetCode题解:Maximum Depth of Binary Tree
- LeetCode题解:Convert Sorted Array to Binary Search Tree
- LeetCode题解: Flatten Binary Tree to Linked List
- [Leetcode] Binary Tree Inorder Traversal (Java)
- 【题解】【BST】【Leetcode】Convert Sorted Array to Binary Search Tree
- leetcode JAVA Validate Binary Search Tree 难度系数3 3.35
- [Leetcode] Construct Binary Tree from Preorder and Inorder Traversal (Java)