数据结构(C语言)树与二叉树基本术语及性质

树是一种数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做“树”是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:
每个结点有零个或多个子结点;没有父结点的结点称为根结点;每一个非根结点有且只有一个父结点;除了根结点外,每个子结点可以分为多个不相交的子树。

树的基本术语

  • 结点:数据元素以及指向子树的分支

  • 根节点:非空树中无前驱结点的结点

  • 结点的度:结点拥有的子树数

  • 树的度:树内各结点的度的最大值

  • 叶子结点(终端节点):度=0的结点

  • 内部节点(非终端节点):根节点以外的分支结点

  • 孩子结点,双亲结点:结点的子树的跟称为该结点的孩子结点,相应的,该结点称为孩子的双亲

  • 结点的祖先:从根到该结点所经分支上的所有结点

  • 树的深度:树中结点的最大层次

  • 有序树:树种结点的各子树从左至右有次序

  • 无序树:树中结点的各子树无次序

  • 森林:是m(m>=0)颗互不相交的树的集合,把跟节点删除树就变成了森林,一棵树可以堪称是一个特殊的森林,给森林中的各个子树加上一个双亲结点,树就变成了森林。

二叉树的定义

二叉树是n(n>=0)个结点的有限集,它或者是空集(n=0),或者由一个根节点及两颗互不相交的分别称作这个根的左子树和右子树的二叉树组成。

特点:
  1. 每个结点最多有俩孩子(二叉树中不存在度大于2的结点)。
  2. 子树有左右之分,其次序不能颠倒。
  3. 二叉树可以是空集合,根可以有空的左子树或空的右子树。

二叉树不是树的特殊情况,他们是两个概念。具有两个结点的二叉树有两种状态,具有两个结点的树只有一种状态。

二叉树的性质

  1. 性质1:在二叉树的第i层上至多有2i-1个结点*(i>=1)
  2. 性质2:深度为k的二叉树至多有2k-1个结点(k>=1)
  3. 性质3:对任意一颗二叉树T,如果叶子数为n0,度为2的结点数为n2,则n0=n2+1
满二叉树

深度为k且有2k-1个结点的二叉树称为满二叉树。

完全二叉树

深度为k的具有n个结点的二叉树,当且仅当其每一个结点都与深度为k的满二叉树中编号为1~n的结点一一对应时,称之为完全二叉树。

在满二叉树中,从最后一个结点开始,连续去掉任意个结点,即是一颗完全二叉树。

完全二叉树的性质
  1. 性质4:具有n个结点的完全二叉树的深度为[log2n]+1,[x]:称作x的底,表示不大于x的最大整数。
  2. 性质5:如果对一颗有n个结点的完全二叉树的结点按层序编号,则对任一结点,有:
    (1)如果i=1,则结点i是二叉树的根,无双亲;如果i>1,则其双亲是结点[i/2]。
    (2)如果2i>n,则结点i为叶子结点,无左孩子;否则,其左孩子是结点2i。
    (3)如果2i+1>n,则结点i无右孩子;否则其右孩子结点是2i+1

猜你喜欢

转载自blog.csdn.net/qq_44864262/article/details/107161581