博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构——二叉树的类型
阅读量:4098 次
发布时间:2019-05-25

本文共 1427 字,大约阅读时间需要 4 分钟。

原文地址:

前面我们已经介绍了二叉树以及二叉树的特性。在这一篇中我们讨论二叉树的常见类型。

下面就是二叉树的常见类型。

满二叉树:如果一个二叉树的所有节点要么有2个孩子,要么没有孩子,那么这个二叉树就是满的。下面就是一个满二叉树的例子:

18           /       \           15         30          /  \        /  \      40    50    100   40             18           /    \            15     20            /  \             40    50       /   \   30   50              18            /     \            40       30                     /  \                 100   40

在一个满二叉树中,叶子节点的数目等于内部节点数目加1。

L=I+1

在这里L是叶子节点的数目,I是内部节点的数目。

证明请看。

完全二叉树:如果除了在最后一层,最后一层左边有所有的keys外,其他所有的叶子节点都存在,那么这个二叉树就是完全二叉树。

下面是完全二叉树的例子:

18           /       \           15         30          /  \        /  \      40    50    100   40               18           /       \           15         30          /  \        /  \      40    50    100   40     /  \   /    8   7  9

完全二叉树一个实际的例子是。

完整二叉树:一个二叉树所有的内部节点都有两个孩子并且所有的叶子节点都在同一层,那么这个二叉树就是完整二叉树。

下面是一个完成二叉树的例子:

18           /       \           15         30          /  \        /  \      40    50    100   40               18           /       \           15         30

一个高度为 h (高度是根到叶子节点路径上节点的数目)的完整二叉树有

2h1
个节点。

家族遗传就是完整二叉树的一个例子。让一个人在根节点上,父母作为根节点的孩子,父亲的父亲作为孩子。

平衡二叉树:如果树的高度是O( LogN ),这里的N是节点的数目,那么这个二叉树是平衡的。例如,AVL树通过确保左右子树的高度差为1来保持O( LogN )的高度。红黑树通过确保每个根节点到叶子节点路径上的黑色节点数目是相同的,并且没有相邻的红色节点来保持O( LogN )的高度。平衡二叉查询树的性能是相当不错的,它的查询,插入和删除的时间复杂度是O( Logn )。

退化(或者病态)树:一个树的所有内部节点只有一个孩子。这种树的性能跟链表差不多。

10      /    20     \     30      \      40

来源:

转载地址:http://kkhii.baihongyu.com/

你可能感兴趣的文章
图解传说中的HTTP协议
查看>>
go闭包
查看>>
go反射
查看>>
部署超简单的 Golong 分布式 WebSocket 微服务
查看>>
go资料
查看>>
go mod 无法下载依赖问题
查看>>
mysql source插入数据乱码
查看>>
go 解析csr参数(完整)
查看>>
golang日志框架之logrus
查看>>
es修改密码
查看>>
go 协程池使用提示
查看>>
go 生成邀请码,可逆
查看>>
Go 高级并发
查看>>
mysql update与group by
查看>>
nginx反代 499 502 bad gateway 和timeout
查看>>
linux虚拟机安装tar.gz版jdk步骤详解
查看>>
python猜拳游戏
查看>>
python实现100以内自然数之和,偶数之和
查看>>
python数字逆序输出及多个print输出在同一行
查看>>
python九九乘法表(详解)
查看>>