首页 > 学院 > 开发设计 > 正文

平衡二叉树

2019-11-08 19:50:32
字体:
来源:转载
供稿:网友

题目描述

输入一棵二叉树,判断该二叉树是否是平衡二叉树。

解析:平衡二叉树具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。所以我们可以求出根节点,左右子树的深度,并利用它来判定以当前结点为根的树是不是平衡二叉树,同时我们考虑用后序遍历,因为这样子可以让我们对每个结点做到只遍历一次。

代码如下:

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; } return right>left ?right+1:left+1; }
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表