class TreeNode{
public int val=1;
TreeNode left;
TreeNode right;
TreeNode(int x){
this.val=x;
}
}
public class Solution {
//public int ldepth=1,rdepth=1;
public int depth;
public int maxDepth(TreeNode root){
if(root==null)
return 0;
root.val=1;
if(root.left!=null){
root.val=maxDepth(root.left)+1;
}
if(root.right!=null){
int s=maxDepth(root.right);
if(s+1>root.val){
root.val=s+1;
}
}
return root.val;
}
}
minmum depth
/**求最小深度
* Created by a819 on 2017/8/2.
*/
class TreeNode{
public int val;
public TreeNode left;
public TreeNode right;
TreeNode(int x){
this.val=x;
}
}
public class Solution {
public int run(TreeNode root){
if(root==null)
return 0;
root.val=1;
if (root.left==null&&root.right==null)//如果只有一个节点,深度是一
return 1;
//否则深度是孩子最短深度加一
else{
if(root.left!=null)
root.val=run(root.left)+1;
if(root.right!=null){
int s=run(root.right)+1;
if(root.left==null)//左边节点可能为空,拿着时候他的深度位又孩子加一
root.val=s;
else if(root.val>s)
root.val=s;
}
return root.val; }
}
}
3.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.
/**
* Definition for binary tree
* public class TreeNode {
* int val;
* TreeNode left;
* TreeNode right;
* TreeNode(int x) { val = x; }
* }
*/
public class Solution {
public boolean isBalanced(TreeNode root) {
int leftDep=0;
int rightDep=0;//定义左右节点的深度
if (root==null)
return true;//节点为空认为平衡
if (root.left!=null)
leftDep=height(root.left);
if (root.right!=null)
rightDep=height(root.right);
if (Math.abs(leftDep-rightDep)<=1)
return isBalanced(root.left)&&isBalanced(root.right);
else return false;
}
/**
* 求左右孩子的最大高度也就是深度
* @param node
* @return
*/
public int height(TreeNode node){
int s=0;
node.val=1;
if (node.left!=null)
node.val=height(node.left)+1;
if (node.right!=null) {
s = height(node.right) + 1;
if(s>node.val)
node.val=s;
}
return node.val;
}
}