题目描述
输入一棵二叉树,判断该二叉树是否是平衡二叉树。
在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树
题目链接:
关键点:
遍历结束条件:1、叶子节点 2、已判定不是平衡二叉树
public class Solution { private boolean flag = true; public boolean IsBalanced_Solution(TreeNode root) { judge(root); return flag; } public int judge(TreeNode cur){ //结束条件:节点为null 或者 已判定不是平衡二叉树 if(null == cur || flag == false){ return 0; } //左右子树的高度 int leftDepth = judge(cur.left); int rightDepth = judge(cur.right); int dis = leftDepth - rightDepth; //节点高度差大于1说明不是平衡二叉树 if(dis < -1|| dis > 1){ flag = false; return 0; } //返回时加上当前节点的高度 return leftDepth>rightDepth?leftDepth+1:rightDepth+1; } }