数据结构之树

一、定义

二、概念

度、叶结点/终端结点、分支结点/非终端结点、根结点/内部结点、孩子、双亲、兄弟、祖先、子孙、堂兄弟、层次

、深度(高度)、有序/无序树、森林

三、存储结构:简单的顺序存储结构无法满足,要使用顺序+链式结构

  1. 双亲表示法:当前数据+parents指针
  2. 孩子表示法:顺序存储(当前数据+firstchild)+ firstchild单链表存储(child+next)
  3. 双亲孩子表示法:当前数据+firstchild指针+parents指针
  4. 孩子兄弟表示法:当前数据+firstchild指针+右兄弟指针(注:该方法可转换成二叉树)

四、二叉树:

  • 定义:

  1. 定义:n(n\geq 0)个结点的有限集合,该集合或为空集或为一个根节点和两颗互不相交的称为根节点的左子树和右子树的二叉树组成

  2. 特点:每个结点最多两个子树,左右子树有顺序,即使只有一个子树也要区分左右

  • 性质

  1. 二叉树的第i层至多有2^{^{i-1}}个结点(i\geq 1
  2. 深度为K的二叉树,至多有2^{^{k}}-1个结点(k\geq 1
  3. 二叉树的终端结点数为n_0,度为2的结点数为n_2,则n_0 = n_2 +1
  4. n个结点的完全二叉树深度为\left \lfloor log_2n \right \rfloor+1(符号表示不大于)
  5. n个结点的完全二叉树,从上到下,从左到右编号,对任一结点i(1\leq i\leq n):

       (1)i=1,该结点为根节点,i>1,该结点的双亲为\left \lfloor i/ 2\right \rfloor

       (2)2i>n,该结点无左孩子,否则左孩子为2i

       (3)2i+1>n,该结点无右孩子,否则右孩子为2i+1

  • 二叉树存储结构

  1. 顺序存储(一般用于完全二叉树):用一组数组存储结点,下标体现结点间的逻辑关系
  2. 二叉链表:当前数据+左子树指针+右子树指针(加上双亲指针为三叉链表)
  • 二叉树的遍历

  1. 前序(根左右)
  2. 中序(左根右)
  3. 后序(左右根)
  • 二叉树的建立

  • 树、森林与二叉树的转换

  1. 树  ==》二叉树
  2. 树《==  二叉树
  3. 森林  ==》二叉树
  4. 森林《==  二叉树
  • 特殊二叉树

  1. 斜树
  2. 满二叉树
  3. 完全二叉树
  4. 线索二叉树
  5. 哈夫曼树(编码)

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章