数据结构(树和二叉树)

一、树:

概念:树是n(n>=0)个结点的有限集合,n= 0时称为空树 , 在任一非空树中:有且仅有一个称为根的结点,其余的结点可分为m(m>=0)个互不相交的子集T1 , T2.... Tm ,其中每个子集本身又是一棵树,并称其为根结点的子树。

  1. 双亲和孩子
  2. 兄弟:具有相同双亲的结点互为兄弟
  3. 结点的度:一个结点的子树的个数计为该结点的度
  4. 树的度:树中各个结点的度的最大值
  5. 叶子结点:也称为终端结点,指度为零的结点。
  6. 内部结点:度不为零的结点称为分支结点或非终端结点。除根结点外,分支结点也称为内部结点。
  7. 结点的层次:根为第一层,根的孩子为第二层,以此类推。
  8. 树的高度:一棵树的最大层次数记为树的高度(或深度)
  9. 有序(无序)树:若将树中的结点的各子树看成是从左到右具有次序的,即不能交换,则称该树为有序树,否则称为无序树。
  10. 森林:是m(m>=0)棵互不相交树的集合。

树的存储结构:

  1. 标准存储结构:
    1. 结点的数据
    2. 指向子结点的指针
  2. 带逆存储结构
    1. 结点的数据
    2. 指向子结点的指针
    3. 指向其父结点的指针

树的遍历:

  1. 指对树中所有结点信息的访问,即依次对树中每个结点访问一次且仅访问一次。

前序遍历:ABEFIJCDGH

后序遍历: EIJFBCGHDA

层次遍历:ABCDEFGHIJ

 

二、二叉树:

概念:(BinaryTree)是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两课和互不相交的、分别称为左子树和右子树的二叉树组成。

二叉树与树的区别:

  • 二叉树的结点的最大度为2,而树中不限制结点的度。
  • 二叉树的结点的子树要区分左子树和右子树。

二叉树的性质:

  • 二叉树第i层上的结点数目最多为2的i 减去1次方(i>=1)
  • 深度为k的二叉树至多有2的k次方减1个结点(k>=1)
  • 在任意一颗二叉树中,若终端结点树为n0,度为2的结点树为n2,则n0 = n2 + 1.
  • 具有n个结点的完全二叉树的深度为log2为底n的对数的绝对值 加 1
  • 对一颗有n个结点的完全二叉树的结点按层次自左至右进行编号,则对任一结点i有:
    • 若 i = 1,则结点 i 是二叉树的根,无双亲 , 若1 > 1 ,则其双亲为i 除2
    • 若2i > n ,则结点i 无左孩子,否则其左孩子为2i
    • 若2i +1 > n , 则结点i 无右孩子 ,否则其右孩子为2i + 1.
  • 若深度为k的二叉树有2的k次方减一个结点,则称为满二叉树。深度为k有n个结点的二叉树,当且仅当其中每一个结点都与深度为k的满二叉树编号从1至n的结点一一对应,称为完全二叉树。

二叉树的存储结构:

  • 顺序存储结构:
    • 对完全二叉树既简单又节省空间,而对于一般二叉树则不适用
  • 链式存储结构:
    • 由于二叉树中结点包含有数据元素、左子树根、右子树根及双亲等信息,因此可以用三叉链表或二叉链表来存储二叉树,链表的头指针指向二叉树的根节点。

二叉树的遍历:

 

  • 前序遍历:421356
  • 中序:123456
  • 后序:132354

二叉排序树:又称为二叉查找树。(或者是一颗空树,或者是具有下列性质的树:

  1. 若左子树不空,则左子树上所有结点的值均小于它的根节点的值。
  2. 若右子树不空,则右子树上所有结点的值均大于或者等于它的根节点的值。
  3. 左右子树分别为二叉排序树

平衡二叉树:(又被称为AVL树,具有以下性质:

  • 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1 , 并且左右两个子树都是一棵平衡二叉树。

线索树:

  • n个结点的二叉链表中含有n+1个空指针域。利用二叉链表中的空指针域,存放指向结点的某种遍历次序下的前驱和后继结点的指针(这种附加的指针称为“线索”)。

最优二叉树(哈夫曼树)

  • 给定n个权值作为n的叶子结点,构造一棵二叉树,若带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为为哈夫曼树。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值