Chapter8-1二叉树和树基本概念-特性-存储(精).pptVIP

  • 1
  • 0
  • 约6.14千字
  • 约 38页
  • 2019-08-31 发布于四川
  • 举报

Chapter8-1二叉树和树基本概念-特性-存储(精).ppt

数据结构与算法 Chapter8 二叉树和树 内容提要 8.1 树 8.2 二叉树 8.3 二叉树的特性 8.4 二叉树的描述(存储) 8.5 二叉树常用操作 8.6 二叉树遍历 8.7 抽象数据类型BinaryTree 8.8 类BinaryTree 8.9 抽象数据类型及类的扩充 8.10 应用 非线性结构 8.1 树(Tree) 树结构示例:模块划分 树结构示例:DNS 树的定义 树的基本术语 8.2 二叉树(Binary Tree) 8.3 二叉树的特性 课堂练习 满二叉树和完全二叉树 8.4 二叉树描述(存储结构) 二叉链表节点类(程序8-1) 8.5 二叉树基本操作 遍历:每个元素仅被访问一次,是基础操作! 确定其高度 确定其元素数目 复制 在屏幕或纸上显示二叉树 确定两棵二叉树是否一样 删除整棵树 若为数学表达式,计算该数学表达式 若为数学表达式树,给出对应的带括号的表达式 课后作业 1、二叉链表 节点结构 RightChild data LeftChild 8.4.2 链式存储表示(适用于一般二叉树) 链表表示 当二叉树采用二叉链表存储结构时,如果其节点的左孩子或右孩子不存在,则相应的指针域为空; 设置一个头指针,指向二叉树的根节点,它可以唯一地确定一棵二叉树。 例 A D B C E F A ^ B ^ C D ^ ^ E ^ ^ F ^ t 【思考】 有多少个指针域的值为0(NULL)? n+1? 在含有n个节点的二叉链表中有n+1个空指针域。 证明:n个节点共有指针域2n个 n个节点共有分支n-1个 所以,n个节点共有空指针域2n-(n-1)=n+1个 必须从根节点开始,每遍历一个节点就要进行判断,看它的左、右孩子是不是已知的节点。 【思考】 怎样在二叉链表中寻找某个节点的父节点? 2、三叉链表:便于查找父节点 节点结构 parent RightChild data LeftChild 链表表示 例 A D B C E F ^ A ^ B ^ C D ^ ^ E ^ ^ F ^ t template class T class BinaryTreeNode { friend void Visit(BinaryTreeNodeT *); friend void InOrder(BinaryTreeNodeT *); friend void PreOrder(BinaryTreeNodeT *); friend void PostOrder(BinaryTreeNodeT *); friend void LevelOrder(BinaryTreeNodeT *); friend void main(void); public: BinaryTreeNode( ) {LeftChild = RightChild = 0;} BinaryTreeNode(const T e) { data = e; LeftChild = RightChild = 0; } BinaryTreeNode(const T e, BinaryTreeNode *l, BinaryTreeNode *r) { data = e; LeftChild = l; RightChild = r; } private: T data; BinaryTreeNodeT *LeftChild, // left subtree *RightChild; // right subtree }; 2010年秋季 非线性结构是指在结构中至少存在一个数据元素,它具有两个或两个以上的直接前驱或直接后继。 树、二叉树:一对多 图、网络:多对多 2 1 14 13 12 11 2 3 4 6 7 8 9 10 5 5 1 2 5 6 4 3 1 2 5 4 3 6 11 33 18 14 6 6 5 19 21 例 客观世界中的树形结构: 人类社会的家谱、族谱; 各种组织机构的表示; 计算机领域: 编译程序的语法结构; 数据库系统中的信息组织; 磁盘文件的目录; 软件工程中的模块划分。 祖父 伯父 父亲 叔父 堂兄 你 堂姐 堂弟 侄儿 命名语法: 主机名.单位名.类型名.国家代码 例如: 以树型结构实现域

文档评论(0)

1亿VIP精品文档

相关文档