遍历 左子树的深度 右子树的深度 较大的深度+1即为二叉树深度
public class Solution {
public int TreeDepth(TreeNode root) {
//空树为0
if(root == null){
return 0;
}
//如果不是空树 是左树和右树较大的+1
int leftnumber = TreeDepth(root.left);
int rightnumber = TreeDepth(root.right);
return leftnumber>rightnumber ? leftnumber+1 : rightnumber+1;
}
}
38题:
要判断是否是平衡二叉树,首先要计算左右子树的高度,看是否相差为1.然后就是递归了,所有的左右子树。
public class Solution {
public boolean IsBalanced_Solution(TreeNode root) {
if(root==null){
return true;
}
int leftHeight = TreeDepth(root.left);
int rightHeight = TreeDepth(root.right);
int diff = Math.abs(leftHeight-rightHeight);
if(diff>1){
return false;
}
return IsBalanced_Solution(root.left)&&IsBalanced_Solution(root.right);
}
public int TreeDepth(TreeNode root) {
//空树为0
if(root == null){
return 0;
}
//如果不是空树 是左树和右树较大的+1
int leftnumber = TreeDepth(root.left);
int rightnumber = TreeDepth(root.right);
return leftnumber>rightnumber ? leftnumber+1 : rightnumber+1;
}
}