非常简单的实现,递归

平衡二叉树

http://www.nowcoder.com/questionTerminal/8b3b95850edb4115918ecebdf1b4d222

*简单总结一下几种树:1.平衡二叉树,2.二叉搜索树,3.镜像树,4.哈夫曼树

  • 1.平衡二叉树,左右子树高度差小于等于1
  • 2.二叉搜索树,左子树全小于根节点,右子树全大于根节点,中序遍历是单调递增序列
  • 3.镜像树,反转原树
  • 4.哈夫曼树,集合中选两个值最小的求和,构建小树,然后继续添加最小节点与当前树上节点或者集合中节点构建次小的值构建小树,后续将其全部链接起来。
public class Solution {
    public boolean IsBalanced_Solution(TreeNode root) {
        if(root==null) {
            return true;
        }
        return Math.abs(TreeDepth(root.left)-TreeDepth(root.right))<=1;

    }
    public int TreeDepth(TreeNode root) {
        if(root==null) {
            return 0;
        }
        return Math.max(1+TreeDepth(root.left), 1+TreeDepth(root.right));
    }
}
全部评论
不能直接return Math.abs(TreeDepth(root.left)-TreeDepth(root.right))<=1,应该return Math.abs(TreeDepth(root.left) - TreeDepth(root.right)) <= 1 && IsBalanced_Solution(root.left) && IsBalanced_Solution(root.right);你这样不能判断这棵树内部节点的左右子树高度差是否不超过1,比如考虑这棵树{1,2,3,4,#,5,#,#,6},用你的算法来计算它就是平衡二叉树,实际上它并不是,它的左子树不满足要求。
1 回复
分享
发布于 2021-04-26 21:38

相关推荐

2 收藏 评论
分享
牛客网
牛客企业服务