数据结构 第六章-树精要.ppt

数据结构 第六章-树精要

;第六章 树和二叉树 线性结构: 线性表,栈,队列 串,数组,广义表 非线性结构: 树和二叉树 图,网;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的孩子。 ;B;12.祖先: 从树的根到某结点所经分枝上的所有结点为该结点的祖先。 13.子孙: 一个结点的所有子树的结点为该结点的子孙。 14.有序树:若任一结点的各棵子树,规定从左至右是有次序的,即不能互换位置,则称该树为有序树。 15.无序树: 若任一结点的各棵子树,规定从左至右是无次序的,即能互换位置,则称该树为无序树。 ;16.森林: m(m≥0)棵互不相交的树的集合。; ;2.嵌套集合:;6.1.3 树的基本操作 1.置T为空树:T={ } 2.销毁树T 3.生成树T 4.遍历树T:按某种规则(次序)访问树T的每一个结点一次且 一次的过程。 5.求树T的深度 6.求树T的度 7.插入一个结点 8.删除一个结点 9.求结点的层号 10.求结点的度 11.求树T的叶子/非叶子 12...................;6.2 二叉树(binary tree) 6.2.1 定义和术语 1. 二叉树的递归定义 二叉树是有限个结点的集合,它或者为空集;或者是 由一个根结点和两棵互不相交的,且分别称为根的左子树 和右子树的二叉树所组成。 若二叉树为空集,则为空二叉树。;例:;3.二叉树与2度树的区别 (1)二叉树;4.三个结点不同形态的二叉树(?种);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个结点;;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

文档评论(0)

1亿VIP精品文档

相关文档