[Leetcode][JAVA] Minimum Depth of Binary Tree && Balanced Binary Tree && Maximum Depth of Binary Tree
2015-04-08 06:50
543 查看
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.
比较左子树和右子树的深度,取小的那个返回上来,并+1。
需要注意的是如果没有左子树或右子树。那么无条件取存在的那一边子树深度,并+1.
如果左子树和右子树都没有,那么就是叶子节点,返回深度1.
如果root自身为null,返回0
Balanced Binary Tree
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
新定义一个函数,表示树的高度,如果是平衡树的话。不是平衡树则置高度为-1. 运用分治法递归,最后得到结果为-1则不是平衡的。基本情况,root==null则高度为0
The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
求最大深度方法也是一样,更简单了:
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.
比较左子树和右子树的深度,取小的那个返回上来,并+1。
需要注意的是如果没有左子树或右子树。那么无条件取存在的那一边子树深度,并+1.
如果左子树和右子树都没有,那么就是叶子节点,返回深度1.
如果root自身为null,返回0
public int minDepth(TreeNode root) { if(root==null) return 0; if(root.left==null && root.right==null) return 1; if(root.right==null) return minDepth(root.left)+1; if(root.left==null) return minDepth(root.right)+1; return Math.min(minDepth(root.right),minDepth(root.left))+1; }
Balanced Binary Tree
Given a binary tree, determine if it is height-balanced.
For this problem, a height-balanced binary tree is defined as a binary tree in which the depth of the two subtrees of every node never differ by more than 1.
新定义一个函数,表示树的高度,如果是平衡树的话。不是平衡树则置高度为-1. 运用分治法递归,最后得到结果为-1则不是平衡的。基本情况,root==null则高度为0
public boolean isBalanced(TreeNode root) { if(height(root)==-1) return false; return true; } public int height(TreeNode root) { if(root==null) return 0; int left = height(root.left); int right = height(root.right); if(left==-1 || right==-1) return -1; if(Math.abs(left-right)>1) return -1; return Math.max(left,right)+1; }
Maximum Depth of Binary Tree
Given a binary tree, find its maximum depth.The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf node.
求最大深度方法也是一样,更简单了:
public int maxDepth(TreeNode root) { if(root==null) return 0; int left = maxDepth(root.left); int right = maxDepth(root.right); return (left>right?(left+1):(right+1)); }
相关文章推荐
- LeetCode:Minimum Depth of Binary Tree&& Maximum Depth of Binary Tree
- Leetcode---Maximum Depth of Binary Tree & Minimum Depth of Binary Tree
- [Java代码] [Leetcode] Maximum and Minimum Depth of Binary Tree 二叉树的最小最大深度
- <LeetCode OJ> (104 / 111) Maximum & Minimum Depth of Binary Tree
- leetcode-Minimum Depth of Binary Tree &&Maximum Depth of Binary Tree
- 【LeetCode】Maximum Depth of Binary Tree && Minimum Depth of Binary Tree
- 【LeetCode-面试算法经典-Java实现】【111-Minimum Depth of Binary Tree(二叉树的最小深度)】
- [LeetCode][Java] Minimum Depth of Binary Tree
- #111 Minimum Depth of Binary Tree & #104 Maximum Depth of Binary Tree
- 【LeetCode】【Python题解】Single Number & Maximum Depth of Binary Tree
- [LeetCode#104, 111]Maximum Depth of Binary Tree, Minimum Depth of Binary Tree
- 【LeetCode】Maximum Depth of Binary Tree&&Same Tree
- [LeetCode][Java]Maximum Depth of Binary Tree
- [LeetCode][Java] Maximum Depth of Binary Tree
- 【LeetCode-面试算法经典-Java实现】【104-Maximum Depth of Binary Tree(二叉树的最大深度)】
- Balanced Binary Tree,Binary Tree Level Order Traversal I&II,Maximum Depth of Binary Tree,Plus One
- Posts Tagged 【bfs】Maximum && Minimum Depth of Binary Tree
- Minimum Depth of Binary Tree leetcode java
- leetcode -day17 Path Sum I II & Flatten Binary Tree to Linked List & Minimum Depth of Binary Tree
- leetcode Minimum&&Max Depth of Binary Tree 求树的最小&&最大深度