各位帅哥靓女们,我是吴所试试,这期给大家带来的是关于二叉树的有关内容,也就是分享一下我对二叉树的所知,老规矩,如果吴所试试有哪里说的不对的地方还请于评论区斧正,如果觉得吴所试试讲的还可以的话,还请给吴所试试一键三连,毕竟吴所试试码字不易。
【一】树的概念以及结构
什么是树?树是一种非线性的数据结构,他是由n个有限节点层次的关系的结合,把他称为树是因为他看起来很像一颗倒挂起来的树,意思也就是他是根朝下,头朝上的。
1.有一个特殊结节点,称之为根节点,根节点没有前驱节点。
2.除根节点外,其余结点被分成m个互不相交的集合,其中每一个集合又是一颗结构和树类似的子树,每棵子树的结点有且只有一个前驱,可以有0个或者多个后续节点,所以树在遍历寻找的时候大部分我们使用的都是递归的方式。
tips:注意树形结构中,子树指尖不能有交集,否则就不是树形结构。
2.树的相关概念
节点的度:一个节点有的子树个数
叶节点或终端节点:度为0的节点被称之为终端或者叶子节点
非终端节点或分支节点:度不为0的节点
双亲节点或者父节点,若是一个节点含有的子树的根节点称为该树的子节点
兄弟节点:具有相同父亲节点的节点被称之为兄弟节点
树的度:一棵树中,最大的节点的度被称之为树的度
节点的层次:从根开始定义起,根为第一层,根的子节点为第二层,以此类推
树的高度和深度:树的节点的最大层次
堂兄弟节点:双亲在同一层节点互为堂兄弟节点
节点的祖先:从根节点所该节点所经分支上的所有的节点
子孙:以谋节点为根的子树中任意节点都为该节点的子孙,如上图所有节点都是A的子孙
森林:由m颗互不相交的树的集合称之为森林
【二】二叉树的概念和结构
概念:二叉树是节点的一个有限集合,该集合:
或者为空
由一个根节点加上两个被称为左子树和右子树的二叉树构成
结构:
二叉树不存在度大于2的节点
二叉树有左右子树之分,次序不能颠倒,所以二叉树是有序的树
特殊的二叉树:
满二叉树:一个二叉树,如果每一层的节点个数都达到最大值,则这个二叉树就是慢二叉树,也就是说,一个二叉树的层序为n,且节点总数为2^n-1,他就是满二叉树。
完全二叉树:完全二叉树是效率很高的数据结构,完全二叉树是由满二叉树迎出来的对于深度为k的二叉树,当他的每一个节点都与深度为n的满二叉树的编号从1到n的一一对应,就称之为完全二叉树。所以满二叉树就是一种特殊的完全二叉树。
说人话就是:当一棵树缺少的字节点是在同一层且缺少的节点连续的话,这个数就是完全二叉树。
【三】二叉树的性质(前提是规定根节点的层数为1)
1.一个非二叉树的第n层上最多由2^(n-1)个节点
2.深度为h的二叉树的最大节点数是2^h-1.
3.对于任何一颗二叉树,如果度为0的叶节点为n0,且度为2的分支节点为n2,则n0=n2+1
4.若规定根节点的层数为1,则具有n个节点的满二叉树的深度为:h= log2(n+1).
5.对编号为i的节点的规律有:
1. 若i>0,i位置节点的双亲序号:(i-1)/2;i=0,i为根节点编号,无双亲节点 2.
若2i+1=n否则无左孩子
3. 若2i+2=n否则无右孩子