二叉树的概念

二叉树是个啥?
想象一下,二叉树就像一棵倒挂的树,不过它只有两个分支:左边一个,右边一个。每棵树(或者说每个结点)都可以有自己的小树,也就是左子树和右子树。
二叉树有啥特点?
有序性:二叉树的左右是有讲究的,不能乱放。
孩子结点:二叉树的每个结点最多只有两个娃,左娃和右娃,而且要分清楚谁左谁右。
特殊类型的二叉树有哪些?
满二叉树:就是每棵树(结点)都有两个娃,长得特别整齐。
完全二叉树:这种树的特点是,如果最后一层没长满,那么这些结点会从左到右依次排列,不会跳过任何一个位置。
完全二叉树有啥特别的?
叶子结点只在最后两层出现,而且最后一层的叶子结点是从左到右排好的。
如果有结点只有一个娃,那这个娃肯定是左娃。
如果编号排好序,一个结点如果是叶子或者只有左娃,那它后面所有的结点也都是叶子。
二叉排序树是咋回事?
这种树的特点是,左边的娃的“关键字”(可以理解为名字或者编号)都比爹小,右边的娃都比爹大。
平衡二叉树有啥好处?
这种树的左右两边长得差不多高,这样找东西的时候不会跑太远。
二叉树的数学特性是啥?
叶子结点的数量总是比有两个娃的结点多一个。
一个层级的树最多能有多少结点,取决于层级数。
一个树最多能有多少结点,取决于它有多高。
完全二叉树的编号规则是啥?
每个结点都有一个编号,爹的编号是娃编号除以2(如果是偶数就是左娃,奇数就是右娃)。
娃的编号是爹的编号乘以2(左娃)或者乘以2再加1(右娃)。
二叉树怎么存?
顺序存储:就是把树的结点按照一定的顺序放到一个列表里。
链式存储:每个结点都记得自己的娃是谁,用链子连起来。
结构描述
在链式存储的二叉树中,如果树不满,会有一些空位,就像是有的座位没人坐。

 

知识点链接
二叉树的定义
二叉树:是由n个结点构成的有限集合,可以为空,或者由一个根结点和两个互不相交的子树组成,这两个子树分别称为左子树和右子树。
主要特性
有序性:二叉树的子树有左右之分,不能随意颠倒。
孩子结点:在度为2的有序树中,如果一个结点只有一个孩子,则不需要区分其左右次序;而在二叉树中,无论孩子数是否为2,都需要确定其左右次序。
特殊类型的二叉树
满二叉树:高度为h的二叉树,含有2^h - 1个结点,每个结点都有两个孩子。
完全二叉树:高度为h,有n个结点的二叉树,其每个结点都与高度为h的满二叉树中编号为1至n的结点一一对应。
完全二叉树的特点
叶子结点只出现在最后两层,且在最后一层的叶子结点从左到右排列。
如果有度为1的结点,它只能有一个左孩子。
按层序编号后,如果某个结点为叶子结点或只有左孩子,则所有编号大于该结点的结点都是叶子结点。
二叉排序树
左子树上所有结点的关键字小于根结点的关键字。
右子树上所有结点的关键字大于根结点的关键字。
左子树和右子树本身也是二叉排序树。
平衡二叉树
任一结点的左子树和右子树的高度差不超过1。
二叉树的性质
非空二叉树上的叶子结点数等于度为2的结点数加1。
非空二叉树第k层上至多有2^{k-1}个结点。
高度为h的二叉树至多有2^h - 1个结点。
完全二叉树的编号规则
结点i的双亲编号为\lceil i/2 \rceil。
结点i的左孩子编号为2i,如果没有左孩子,则无此编号。
结点i的右孩子编号为2i+1,如果没有右孩子,则无此编号。
结点i所在的层次为\log_2(i+1)。
二叉树的存储结构
顺序存储结构:使用一维数组,从上到下、从左至右存储完全二叉树的结点。
链式存储结构:使用链表结点存储二叉树的每个结点,每个结点包含数据和指向左右孩子的指针。
结构描述
在含有n个结点的二叉链表中,含有n+1个空链域。
 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值