数据结构数 6-树.pptVIP

  • 4
  • 0
  • 约1.86万字
  • 约 102页
  • 2017-11-26 发布于河南
  • 举报
数据结构数 6-树

第六章 树和二叉树 线性结构: 线性表,栈,队列 串,数组,广义表 非线性结构:树和二叉树 图,网 6.1树的定义 6.1.1 定义和术语 1.树(tree): 树是n(n≥0)个结点的有限集T, 当n=0时,T为空树; 当n0时, (1)有且仅有一个称为T的根的结点, (2)当n1时,余下的结点分为m(m0)个互不相交的有限集T1,T2,...,Tm ,每个Ti(1≤i≤m)也是一棵树,且称为根的子树。 例1. 一个结点的树 T={A} T1={B,C,D,E,F} T11={C,D,E} T111={D} T112={E} T12={F} T2={G,H} T21={H} T3={I,J,K,L,M,N,O,P} T31={J,K,L,M,N} T32={O} T33={P} T311={K} ... T312={L} 2.结点的度(degree): 结点的子树数目 3.树的度: 树中各结点的度的最大值 4.n度树: 度为n的树 5.叶子(终端结点): 度为0的结点 6.分枝结点(非终端结点,非叶子): 度不为0的结点 7.双亲(父母,parent)和孩子(儿子,child) : 若结点C是结点P的子树的根,称P是C的双亲,C是P的孩子。 12.祖先: 从树的根到某结点所经分枝上的所有结点为该结点的祖先。 13.子孙: 一个结点的所有子树的结点为该结点的子孙。 14.有序树:若任一结点的各棵子树,规定从左至右是有次序的,即不能互换位置,则称该树为有序树。 15.无序树: 若任一结点的各棵子树,规定从左至右是无次序的,即能互换位置,则称该树为无序树。 16.森林: m(m≥0)棵互不相交的树的集合。 例: 3.二叉树与2度树的区别 (1)二叉树 4.三个结点不同形态的二叉树(5种) 6.二叉树的基本操作 1.置T为空二叉树:T={ } 2.销毁二叉树T 3.生成二叉树T:生成哈夫曼树、二叉排序树、平衡二叉树、堆 4.遍历二叉树T: 按某种规则访问T的每一个结点一次且仅一次的过程。 5.二叉树 ←→ 树 6.二叉树 → 平衡二叉树 7.求结点的层号 8.求结点的度 9.求二叉树T的深度 10.插入一个结点 11.删除一个结点 12.求二叉树T的叶子/非叶子 ................... 6.2.2 二叉树的性质和特殊二叉树 1.二叉树的第i(i≥1)层最多有2i-1个结点 3.叶子的数目=度为2的结点数目+1 n0 = n2 + 1 4.满二叉树(full binary tree)---- 深度为k且有2k-1个结点的二叉树。 (2)顺序编号的满二叉树 5.完全二叉树(full binary tree): 深度为k的有n个结点的二叉树,当且仅当每一个结点 都与同深度的满二叉树中编号从1至n的结点一一对应,称 之为完全二叉树(其它教材称为“顺序二叉树”)。 例. 完全二叉树: 例 非完全二叉树: 6.2.3 二叉树的存储结构 1.顺序结构 (1) n个结点的完全二叉树,使用一维数组: 例. ElemType tree[n+1]; char t[7]; (2) 一般二叉树 (3)右单枝树 2.链式存储结构 (1)二叉链表 struct BiTNode //结点类型 { struct BiTNode * lchild;//左孩子指针 ElemType data; //抽象数据元素类型 struct BiTNode * rchild;//右孩子指针 } *root,*p; (2)三叉链表 struct BiTNode { struct BiTNode *parent,*lchild,*rchild ; ElemType data; } *root,*p; (3)静态链表 struct bnode2 { ElemType data; int lchild,rchild; }t[n+1]; 6.3 遍历二叉树和线索二叉树 6.3.1 遍历二叉树 按某种规则访问二叉树的每一个结点一次且仅一次的过程。 设: D----访问根结点,输出根结点;

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档