二叉树

0、二叉树的概念

若将树中每个结点的各子树看成是从左到右有次序的(即不能互换),则称该树为有序树(Ordered Tree),因而二叉树是有序树,但是二叉树的度不一定等于2

  • n 2 =n 0 -1
    其中,n 2 是二叉树度为2的结点数, n 0 是二叉树度为零的结点。
    在证明之前先了解如下概念:1)度:结点拥有的子树数称为结点的度。度为0的结点称为叶结点或终端结点。
                                                   2)分支线总数:从分支线进入结点的角度计算分支线总数,对于二叉树除了根结点意外每个结点都有一个分支线,因此分支线总数为n-1,其中n为结点的总数。
    若用n 1表示度为1的结点数,那么二叉树结点总数n=n 0+n1+n2(此式比较好理解,二叉树只有度为0,1,2的结点)
    而分支线总数为n-1=n 1 +2* n 2
    两式可推出 n 0 + n 1 + n 2-1=n 1 +2* n 2,即n 2 =n 0 -1。



例:二叉树是度为2的有序树是错的

一棵度为二的有序树与一棵二叉树的区别在于:有序树的结点次序是相对于另一结点而言的,如果有序树中的子树只有一个孩子时,这个孩子结点就无须区分其左右次序,而二叉树无论其孩子数是否为2,均需确定其左右次序,也就是说二叉树的结点次序不是相对于另一结点而言而是确定的

1、高度和节点数的问题

(1)对于有n个结点的二叉树,高度为

  • 1+logn到n之间吧任意一个数
  • 每层只有一个结点,那深度是n,
  • 完全二叉树的高度为[log2(n)]+1
深度为k的二叉树,最多有2^k-1个节点,这时的二叉树成为满二叉树,最少有2^(k-1)个结点,满二叉树第k层有2^(k-1)个结点
2、序列构造二叉排序树
(1)定义
二叉排序树或者是一棵空树,或者是具有下列性质的 二叉树
(1)若左子树不空,则左子树上所有结点的值均小于或等于它的 根结点的值;
(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(2)构造方法

给定序列 6 4 8 5 7 9 3构建二叉排序树 并画出先序索二叉树

二叉排序树就是中序遍历之后是有序的;

构造二叉排序树步骤如下;

插入法构造

 第二个结点 4 比 6 来的小 所以插入在 6 的左子树;

 第三个结点 8 比 6 来的大 所以插入在 6 的右子树;

第四个结点 5 比6 来得小 先进入左子树然后跟 4比较,

5 比4 大 所以插入在 4 的右子树;

 

以此类推 将要插入的结点先跟根结点比较, 比根结点大进入右子树 反之进入 左子树;

在跟进入的 左子树(右子树)的结点比较 方法同上;

直到没有结点了  在插入;  你给的排序最后的二叉排序树如下;

 

 

 中序遍历结果是  :  3 4 5 6 7 8 9 ;

 先序遍历结果是 : 6 4 3 5 8 7 9 ;


3、根据遍历结果求二叉树棵数
利用卡特兰数求解(n为结点数)
  • 卡特兰数:h(n)=C(2n,n)/(n+1) (n=0,1,2,...)
    h(3)=C(6,3)/4=5
4、二叉树的还原(利用遍历方式)
  • 二叉树的还原必须有中序和另外任一遍历顺序  
  • 必须要有中序排序。
    前序: |根|左右 |
    后序: |左右|根 |
    如果没有中序,显然左右这部分不知道具体怎么分,哪部分是左,哪部分是右,没有界限。
    如果有了中序, |左|根|右|,很明显,左右以根结点区分开来。
5、普通树转变成二叉树和二叉树转换成森林

(1)普通树转换为二叉树的方法是:

①树中所有相同双亲结点的兄弟节点之间加一条连线

②对树中不是双亲结点第一个孩子的结点,只保留新添加的该结点与左兄弟结点之间的连线,删去该结点与双亲结点之间的连线

③整理所有保留和添加的的连线,使每个结点的第一个孩子结点连线位于左孩子指针位置,使每个结点的右兄弟结点连线位于右孩子指针位置:

整个转换过程如下图从左到右所示

  • 大孩子变左孩子,兄弟变右孩子

 )

(2)二叉树转换成森林

根及其左子树为一棵树,右子树成为另一棵树,不断地分化,直到最后一棵二叉树没有右子树。左孩子变大孩子,右孩纸变兄弟



6、三叉链表做二叉树存储
用三叉链表作二叉树的存储结构,当二叉树中有n个结点时,有()个空指针。
  • 三叉链表每个节点有三个指针域(左、亲、右),共3n个指针。
    其中非空指针=亲(n-1个,因为根节点没有双亲)+左右(n-1,因为n个节点的二叉树有n-1条边)=2n-2;
    所以空指针=3n-(2n-2)=n+2。

7、完全二叉树与满二叉树
完全二叉树度为1的节点数有0个或1个,满二叉树的度为1 的节点数为0个


8、二叉树三种遍历的叶节点先后顺序
(1)相对次序发生变化的都是子数的根,叶节点的先后顺序是不变的。
(2)一个树形的叶结点,在前序遍历和后序遍历下,皆以相同的相对位置出现

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值