11.12数据结构----二叉树

继昨天之后今天学习了以下知识点:

1. 理解了何为满二叉树和完全二叉树,

一棵深度为k且有2k-1个结点的二叉树称为满二叉树;而完全二叉树是这样子的:如果深度为k,由n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号从1到n的结点一一对应的二叉树。随便说一下满二叉树的特点:1基本特点是每一层上的结点数总是最大结点数。2满二叉树的所有的支结点都有左、右子树。3可对满二叉树的结点进行连续编号,若规定从根结点开始,按“自上而下、自左至右”的原则进行。

记得哦~遍历二叉树是按一定的规则将树中的结点排列成一个线性序列,即是对非线性结构的线性化操作

接下来将一下学到二叉树的一些算法应用:(我觉得这对于我更深的理解二叉树有非常大的作用)

其一,二叉树的二叉链表创建

(1)按满二叉树方式建立

    在此补充按满二叉树的方式对结点进行编号建立链式二叉树。对每个结点,输入i、ch。

在建立过程中借助一个一维数组S[n] ,编号为i的结点保存在S[i]中。算法先忽略我也正是在摸索这一部分当中并不是很理解。

⑵  按先序遍历方式建立

在这里多说一点就是二叉树的扩充方法是:在二叉树中结点的每一个空链域处增加一个扩充的结点(总是叶子结点,用方框“□”表示)。对于二叉树的结点值:

◆是char类型:扩充结点值为“?”;

◆是int类型:扩充结点值为0或-1;

◆若是(正常)结点值:动态地为根指针分配一个结点,将该值赋给根结点,然后递归地创建根的左子树和右子树。

这也是重点知识哦,记住了!

其二,求二叉树的叶子结点数

    可以直接利用先序遍历二叉树算法求二叉树的叶子结点数。只要将先序遍历二叉树算法中vist()函数简单地进行修改就可以。这个参照的算法实现掌握了。由于C还没复习到指针,卡主了。呵呵,所以很多东西都是要前后贯通才行呀啊,继续加油,先参照着教材理一遍。

其三,求二叉树的深度      

   利用层次遍历算法可以直接求得二叉树的深度。我看了算法实现,我只记得大概过程,还不是很理解啊~~~~~呜呜。。。

昨天由于考虑到学习的难度和效率还有两个二叉树的性质没学,现在补充上去;加上今天的理解我又回去看了性质1.2.3效果非常好,更深刻了呀~

性质4:n个结点的完全二叉树深度为:(㏒2n) +1。不用讲,挺简单!

对于性质5,花了不少时间,主要是它涉及到了我今天才学到的线索树啊啊啊。。。好了现在也搞定了,至此二叉树的5个性质掌握了哦!

性质5:若对一棵有n个结点的完全二叉树(深度为{㏒2n}+1)的结点按层(从第1层到第(㏒2n) +1层)序自左至右进行编号,则对于编号为i(1≦i≦n)的结点:

⑴若i=1:则结点i是二叉树的根,无双亲结点;否则,若i>1,则其双亲结点编号是 (i/2) 。

⑵如果2i>n:则结点i为叶子结点,无左孩子;否则,其左孩子结点编号是2i。

⑶如果2i+1>n:则结点i无右孩子;否则,其右孩子结点编号是2i+1。

好了,接下来我当然也学到了树的另一个重要内容,那就是“线索树”

在此必须用到一个表格哦这样子才好体现和理解它,


以这种节点结构构成的二叉链表作为二叉树的存储结构,叫做线索二叉树表,其中指向节点前驱和后继的指针,叫做线索。加上线索的二叉树称之为线索二叉树。

在线索树上进行遍历,只要先找到序列中的第一个结点,然后就可以依次找结点的直接后继结点直到后继为空为止。

 2.二叉树的线索化指的是依照某种遍历次序使二叉树成为线索二叉树的过程。

    线索化的过程就是在遍历过程中修改空指针使其指向直接前驱或直接后继的过程。

    仿照线性表的存储结构,在二叉树的线索链表上也添加一个头结点head,头结点的指针域的安排是:

 ◆ Lchild域:指向二叉树的根结点;

 ◆ Rchild域:指向中序遍历时的最后一个结点;

 ◆ 二叉树中序序列中的第一个结点Lchild指针域和最后一个结点Rchild指针域均指向头结点head。


对于这些关系,与其它的特点我觉得挺烦的弄得有点混乱,还有很多很多呀。。。在这里我诉说不出来了啊,得慢慢理解这部分啊,,不要急!

还有学习其他的若干点知识,由于理解不深,表达就出问题了,所以还得继续加油加油加油。

今天就到此先了。明天继续。。。。。。。。。。。。。。。。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值