树结构

一、 树

1. 树的定义

  树结构是一种非常重要的非线性结构,该结构中的一个数据元素可以有两个或两个以上的直接后继元素;它是n(n>=0)个结点的有限集合,当n=0时称为空树。在任意飞空树中有且仅有一个称为根的结点;

  树的基本概念

  a. 双亲、孩子和兄弟。结点的子树的根称为该结点的孩子,该结点称为其子结点的双亲(parent)。具有相同双亲的结点互为兄弟。

  b. 结点的度。一个结点的子树的个数即为该结点的度。度数最大的结点的度称为树的度。

  c. 叶子节点。度为0的节点,也称终端结点。

  d. 内部结点。度不为0的节点(包括根节点),也称分支结点或非终端结点。除根节点以外,分值结点也称为内部结点。

  e. 结点的层次。根为第一层,根的孩子为第二层,依此类推。

  f. 树的高度。一棵树的最大层数记为树的高度(或深度)。

  g. 有序(无序)树。若将树中结点的各子树看成是从左到右具有次序的,即不能交换,则称为改树为有序树,否则称为无序树。

树的遍历:

前序遍历:125673489(10)  后序遍历:567239(10)841  层次排列:123456789(10)前序遍历:125673489(10)

后序遍历:567239(10)841

层次排列:123456789(10)

 

2. 二叉树的定义

  二叉树是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根节点及两棵不相交的且分别称为左、右子树的二叉树所组成。

二叉树和树是两个完全不同的概念,二叉树并不是特殊的树,树和二叉树的区别如下:

  a. 二叉树中结点的子树要区分左子树和右子树,即使在结点只有一颗子树的情况下,也要明确指出该子树是左子树还是右子树。

  b. 二叉树结点最大度为2,而树中不限制结点的度数。

  

  二叉树的性质:

  a. 二叉树第i层(i>=1)上最多有2i-1个结点。

  b. 高度为k的二叉树最多有2k-1个结点(k>=1)。

  c. 对于任何一颗二叉树,若其终端节点数为n0,度为2的结点数为n2,则n0=n2+1。

  d. 具有n个结点的完全二叉树的深度为⌊log2n⌋+1(“⌊⌋”表示向下取整)

  e. 对一棵有n个结点的完全二叉树的所有结点按层次自上而下、自左至右进行编号,则对于在任一结点i(1<=i<=n)有:

    ① 若i=1,则结点i是二叉树的根,无双亲;若i>1,则其双亲为⌊i/2⌋。

    ② 若2i>n,则结点i没有左孩子,否则其左孩子为2i。

    ③ 若2i+1>n,则结点i没有右孩子,否则其右孩子为2i+1。

  满二叉树、完全二叉树、非完全二叉树:

 

 二叉树的遍历:

 

前序遍历:12457236        

中序遍历:42785136

后序遍历:48752631

层次遍历:12345678

  所谓的前、中、后指的是根节点的访问顺序。中序遍历中根节点左边的都是它的左子树结点,右边都是右子树结点;同样,将2看做左子树的根节点的时候,2左边的都是它的左子树结点,右边的也都是它的右子树结点,依此类推。

3. 二叉树和树的转换

  请移步:树转换为二叉树小技巧

posted @ 2015-02-06 13:48  吉喆吉  阅读(991)  评论(0编辑  收藏  举报