题目:如标题所示。
Code如下:
public class Solution {
//后续遍历时,遍历到一个节点,其左右子树已经遍历 依次自底向上判断,每个节点只需要遍历一次
private boolean isBalanced=true;
public boolean IsBalanced_Solution(TreeNode root) {
getDepth(root);
return isBalanced;
}
public int getDepth(TreeNode root){
if(root==null)
return 0;
int left=getDepth(root.left);
int right=getDepth(root.right);
if(Math.abs(left-right)>1){
isBalanced=false;
}
// left,right是对当前节点的左右子节点进行遍历,return Math.max(left,right)+1
// 则是求出当前节点的深度,并将结果抛给上一层。
// 这三个步骤相结合则是一次后序遍历(左右根)
return right>left ?right+1:left+1;
}
}