初识二叉树

1.1树的相关概念

树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。 由于该个结构看起来很像一个倒挂的树的形状,所以被成为树。

 在树中,有一个结点十分特殊,它没有前驱结点,这个结点叫根节点,除根节点外,其余结点则被分成M(M>0)个互不相交的集合T,其中每个集合又可以看成是一个个与数结构相似的子树,每个子树仅有一个前驱结点,但可以有多个后继结点,可以看出,树是递归定义的。此外需要注意的是,在树形结构中,子树之间不能有交集,否则就不是树形结构,如:

 


  • 节点的度:一个节点含有后继结点的个数称为该节点的度;如上图结点A度为6。
  • 叶子结点/终端节点:节点度为0,也就是没有后继结点的节点被称为叶子结点;如结点B、H、P等。
  • 分支结点/非终端结点:与叶子节点相对的,结点度不为0的结点;如结点D、E、F等。
  • 双亲结点/父节点:树的根结点,这里的树可以是含有子结点的任意子树;如结点D为H的双亲结点。
  • 孩子节点/子节点:与双亲结点相对应的,其后继结点为结点;如结点H为D的子结点。
  • 兄弟节点:具有相同父节点的节点互称为兄弟节点;如结点B、C、D为兄弟结点。
  • 树的度:在一棵树中,最大的节点的度称为树的度;如该图中树的度为6。
  • 节点的层次:从根结点开始定义,根为第1层,根的子节点为第2层,依次类推;如上图结点共四层。
  • 树的高度/深度:树中节点的最大层次; 如上图:树的高度为4
  • 堂兄弟节点:双亲在同一层的节点互为堂兄弟结点;如上图:H、I互为堂兄弟节点。
  • 节点的祖先:在树中,从根到该节点所经分支上的所有节点;如上图:A是所有节点的祖先
  • 子孙:以某节点为根的子树中任一节点都称为该节点的子孙。如上图:所有节点都是A的子孙
  • 森林:由M(M>0)棵互不相交的树的集合称为森林; 

2.1二叉树概念及结构

2.11二叉树的相关概念

在了解了树的相关概念之后,我们就可以更好的知道有关二叉树的知识,二叉树,顾名思义,是在树的结构基础上特化的一种结构,二叉树是一个最大度不超过2的树,其每个子结点的度同样不能超过2,二叉树由一个根节点和两个子树组成,这两个子树我们称为左子树和右子树,二叉树的子树有左右之分,是一个有序树,其次序不能颠倒。

需要注意的是,二叉树的最大度虽然为2,但是也可以存在小于2的度,可以是1或者是0, 这里就有可能出现以下几种情况的二叉树。

2.12两种特殊的二叉树 

1.满二叉树:满二叉树中每一层的结点数都达到了最大,也就是说,除叶子结点以外,其余结点均有两个子结点,所以,满二叉树第k层数的结点数为2^(k-1)个,而在一个最大深度为k的满二叉树中,其结点总数应当为2^k-1个。 

2.完全二叉树: 完全二叉树与满二叉树有所不同,我们可以认为它是由满二叉树的删减版,除最后一层以外,完全二叉树每层节点数都能达到最大数,此外,最后一层结点数是从左往右依次增加的,不能出现左边有结点,而右边出现结点的情况;可以将满二叉树看作是特殊的完全二叉树。


 2.13二叉树的一些性质

1. 若规定根节点的层数为1,则一棵非空二叉树的第k层上最多有2^(k-1)个结点。

2. 若规定根节点的层数为1,则深度为h的二叉树的最大结点数是2^h-1个结点。

3.任何一棵二叉树, 如果度为0其叶结点个数为n0 , 度为2的分支结点个数为n2 ,则有n0=n2+1

4. 若规定根节点的层数为1,具有n个结点的满二叉树的深度h= log2(n+1)

(以2为底,以n+1为对数)

5. 对于具有n个结点的完全二叉树,如果按照从上至下从左至右的数组顺序对所有节点从0开始编号,则对于序号为i的结点有:

  • 若 i >0,i位置节点的双亲序号:(i-1) / 2 。
  • 若2*i+1< n,左孩子序号:2*i+1。
  • 若2*i+2< n,右孩子序号:2*i+2。


3.1二叉树的储存结构

二叉树的存储一般分为两种,一种是顺序存储结构,一种是链式储存结构。

3.11顺序存储

二叉树的顺序结构存储就是使用数组来存储的,一般使用数组来存储的二叉树只适合表示完全二叉树,因为不是完全二叉树会有空间的浪费。而现实中使用中只有堆才会使用数组来存储,关于堆,之后再将进行详细说明。二叉树的顺序存储在物理上是一个数组,而在逻辑上是一颗二叉树。

3.12 链式存储

二叉树的链式存储结构,是使用链表来表示一棵二叉树。 通常的方法是链表中每个结点由三个域组成,数据域和左右指针域,左右指针分别用来给出该结点左孩子和右孩子所在的链结点的存储地址,之后的部分会对其链式储存进行详细讲解,这里就不过多介绍了 。


结语:

本期关于树与二叉树的基本相关知识到这就介绍完了,下期内容更详细精彩! 如果感觉对你有帮助的话还请点个赞支持一下!有不对或者需要改正的地方还请指正,感谢各位的观看。

 

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值