数据结构---树、二叉树、线索二叉树

1.树的基本概念

        首先是一些树的基本概念,比如说空树、非空树除此之外还有关于树的基本常识:

        1.树的根节点没有前驱,且除了根节点以外的其他节点有且只有一个前驱

        2.树的所有结点可以有零个或多个后继

        然后要注意一些基本的术语:

        a)子孙、祖先、双亲、孩子、兄弟、堂兄弟

        b)结点的度、树的度(结点中的最大度数)、分支结点(度大于0)、叶子结点(度为0 的结点)

        c)结点的深度是从顶部自上而下的,结点的高度是从叶子结点自下而上的,树的高度是结点的最大层数。

        d)有序树和无序树(有序树是指各子树从左到右是有次序的,有序树给插入比较带来了方便,否则就为无序数)

        e)路径和路径长度(两个结点直接经过的结点序列构成了路径,经过的边的条数则为路径长度)

        f)森林是m棵不相交的树的集合

2.树的性质

        1.*树的结点数量为所有结点的度数之和+1

        2.度为m的树中第i层至少有m^i-1个结点(i>=1)

        3.高度为h的m叉树至多有(m^h-1)/(m-1)个结点

        4.具有n个结点的m叉树的最小高度为log以m为底(n(m-1)+1)向上取整

        ps:这些都可以自己推导

【例题】1.度为4的树中,有20个度为4的结点,10个度为3 的结点,1个度为2 的结点,10个度为1的结点,则树的叶子结点的个数为多少?

总结点数量(总度数+1):20*4+10*3+1*2+10*1+1=123

而叶子节点的个数为度为0的个数,有因此用总结点数量减去度为1 2 3节点的个数即为叶子结点的个数:123-20-10-1-10=82(个)

 

3.二叉树的基本概念

        1.二叉树的定义

                二叉树也是一种树形结构,特点是每个结点至多只有两颗子树(不存在度大于2的结点)子树有左右之分,不可以随意颠倒次序

        2.一些需要知道的二叉树:

                1.满二叉树(除了叶子结点意外其他结点的度均为2)

                2.完全二叉树(重要)

                        1.如果i <=n/2的向下取整,则i为分支结点,否则为叶子结点(n为结点数)

                        2.若有度为1的结点,则只可能有一个

                3.二叉排序树

                        左子树的所有结点的关键字均小于根结点的关键字,而右子树则相反

                4.平衡二叉树

                        任意结点的左右子树的深度差不超过1

3.*二叉树的性质

        1.非空二叉树上的叶子结点的个数等于度为2 的结点的个数+1.即 N0=N2+1

        2.非空二叉树第k层至多有2^(k-1)个结点

        3.高度为h的二叉树至多有2^h-1个结点(等比求和)

        4.n个结点的完全二叉树的高度为log以2为底(n+1)取顶或者log以2为底n取底+1

4.二叉树的存储结构

        1.顺序存储结构(更适合完全二叉树)

        2.链式存储结构(含有n+1个空链域)

                

5.二叉树的遍历与线索二叉树

        二叉树的遍历有先序遍历,中序遍历,后序遍历,指的是子树和根结点的访问次序,

        分别为根左右,左根右,左右根。

        要注意的是层次遍历也称层序遍历,是按队列的方式访问各个结点,其过程如下

        1.根结点入队

        2.若队列非空,队头出队,并访问该结点,并将左右子树插入队列

        3.重复此操作

        线索二叉树

                对于研究生考试来说,这个地方的考点一般是手写线索化和代码,及前驱和后继的寻找和规律的总结。相比于二叉树,线索化的二叉树多了两个标志域:Ltag和Rtag,Ltag为1指示结点的前驱,Rtag为1指示结点的后继,而为0分别指示左右孩子。关于不同遍历方式线索化二叉树的构造,要注意的是先序遍历中的寻找前驱的过程可能会出现死循环的情况。这部分要结合画图和代码好理解一些。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值