二叉树理解

 

一,二叉树理解

每个结点至多拥有两棵子树(即二叉树中不存在度大于2的结点),并且,二叉树的子树有左右之分,其次序不能任意颠倒。

树的深度和高度的定义:

节点的深度是指从根节点到该节点的最长简单路径边的条数,而高度是指从该节点到叶子节点的最长简单路径边的条数。

深度和高度详解参考:https://blog.csdn.net/demonandyu/article/details/85331904

二,二叉树的几种分类

2.1 满二叉树(Perfect Binary Tree, 又称 完美二叉树)

一个深度为k(>=-1)且有2^(k+1)-1个结点的二叉树,即每层节点数为2^k+1 个,称为完美二叉树

2.2 完全二叉树(Complete Binary Tree)

最后一层可以不完全填充,其叶子结点都靠左对齐。

2.3  完满二叉树(Full Binary Tree)  

所有非叶子结点的度都是2,

2.4 平衡二叉树

当且仅当两个子树的高度差不超过1时,这个树是平衡二叉树。(同时是排序二叉树)

2008111712242127

三,一些例子区分

3.1 完全二叉树,和 完满二叉树

3.2 完满(Full)二叉树 v.s. 完全(Complete)二叉树 v.s. 完美(Perfect)二叉树

3.3 

(1)一棵完美(Perfect)二叉树

(2)完全二叉树

(3) 下图讲解 ,不是一棵完全(Complete)二叉树的例子

如果将11号移动到E 节点下方,则,成为完全二叉树。

 

4 总结

  1. 完美(Perfect)二叉树一定是完全(Complete)二叉树,但完全(Complete)二叉树不一定是完美(Perfect)二叉树。
  2. 完美(Perfect)二叉树一定是完满(Full)二叉树,但完满(Full)二叉树不一定是完美(Perfect)二叉树。(可能full tree, 在右孩子上
  3. 完全(Complete)二叉树可能是完满(Full)二叉树(只有左孩子的情况),完满(Full)二叉树也可能是完全(Complete)二叉树。
  4. 既是完全(Complete)二叉树又是完满(Full)二叉树也不一定就是完美(Perfect)二叉树。

 

四、二叉树与堆

堆的话一般都是用完全二叉树来实现的,比如大堆和小堆。一个树节点的度数就是这个树节点有多少子节点,和树的深度意义不同。

依据二叉树的性质,完全二叉树和满二叉树采用顺序存储比较合适。

完全二叉树是效率很高的数据结构,是一种完全二叉树或者近似完全二叉树,所以效率极高,像十分常用的排序算法、Dijkstra算法、Prim算法等都要用堆才能优化,几乎每次都要考到的二叉排序树的效率也要借助平衡性来提高,而平衡性基于完全二叉树。

前期 看了一些网上的博客,后续还在补充,

 

 

参考来源:

  1. https://www.cnblogs.com/idorax/p/6441043.html
  2. https://blog.csdn.net/mawming/article/details/46471429
  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值