从零单刷数据结构(Java描述)(二十)——二叉树
作者:互联网
二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。
二叉树的特点:
1、任何一个结点的子结点数量不超过2
2、左、右子树有序不可颠倒
特殊的二叉树:
1、斜树
所有的结点都只有左子树的二叉树叫左斜树。所有结点都是只有右子树的二叉树叫右斜树。这两者统称为斜树。
2、满二叉树
在一棵二叉树中,如果所有分支结点都存在左子树和右子树,并且所有叶子都在同一层上,这样的二叉树称为满二叉树。满二叉树的结点数=2n-1,n是树的高度。
3、完全二叉树
对一棵具有n个结点的二叉树按层序编号,如果编号为i(1<=i<=n)的结点与同样深度的满二叉树中编号为i的结点在二叉树中位置完全相同,则这棵二叉树称为完全二叉树。
二叉树的性质:
性质 1 :在二叉树的第 i层上至多有 2i-1 个结点 (i>1)。
性质 2: 深度为 k 的二叉树至多有 2k-1 个结点 (k>=1)。
性质 3: 对任何一棵二叉树 T,如果其终端结点数为n0,度为 2 的结点数为n2,则 n0=n2+1。
性质 4: 具有 n 个结点的完全二叉树的深度为[log2n + 1] ( []表示不大于直的 最大整数)。
性质 5: 如果对一棵有 n 个结点的完全二叉树(其深度为[log2n ]+ 1 ) 的结点按层序编号(从第 1 层到第 [log2n] + 1 层,每层从左到右) ,对任一结点 i (1 <=i<=n) 有:
1. 如果 i=1 ,则结点 i 是二叉树的根,无双亲;如果i>1 ,则其双亲是结点 [i/2] 。
2. 如果 2i>n,则结点 i 无左孩子(结点 i 为叶子结点) ;否则其左孩子是结点
2i。
3. 如果 2i+1>n,则结点 i 无右孩子;否则其右孩子是结点2i+1。
标签:左子,结点,log2n,Java,单刷,右子,二叉树,2i 来源: https://blog.csdn.net/waS_TransvolnoS/article/details/91793350