判断一颗二叉树是否为平衡二叉树

在这里插入图片描述
在这里插入图片描述
例子:
在这里插入图片描述
从上图可以看出:
3的左子树高度为1,右子树高度为0,所以平衡!
1的左子树 高度为2,右子树高度为2,所以平衡!
而对于下图:
在这里插入图片描述
3的左子树高度为2,右子树高度为0,所以不是平衡树!

平衡树和是否为满二叉树没啥特殊联系

满二叉树必然是平衡的,但是平衡二叉树未必是满的!

一面总共一个多小时,红黑树问题就是高手也得手写一个小时,所以问道的概率不大。
但是可能会问道红黑树是啥,怎么用,和平衡二叉树有什么不同,相似点?

下面讲一个高度套路化的东西!

我们可以利用递归函数,判断x是否符合平衡性。
在这里插入图片描述+-
如果每一个数字 作为头结点 都是平衡树,则整棵树都是平衡的!
哪怕是其中一个子树破坏了这个标准,也是不平衡的!

假设我遍历到某个节点x,我怎么判断x的整棵树是不是平衡的?
需要综合如下信息
1.左树是否平衡(满足这项条件在 看下一个)
2.右树是否平衡(满足这项条件在 看下一个)
3.左树的高度是什么(满足这项条件在 看下一个)
4.右树的高度是什么
然后判断高度差是否为1

接下来设计递归结构:

递归函数返回值应该包含两个信息:
1.树是否平衡
2.这颗树的高度是什么

在pdf中
主函数如下::
首先建立了一棵树
然后调用 isbalancedbinarytree 函数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
需要注意,只要执行if中的return语句,则函数后面部分都不会在执行了!

如果一棵树不是平衡二叉树,那么树的高度自然不必收集!

详见 初级(5)02.11.12部分

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值