第六讲树与二叉树.ppt

  1. 1、本文档共88页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六讲树与二叉树

第6章 树和二叉树;D是具有相同特性的数据元素的集合。;B;基 本 术 语;结点;结点的层次;(从根到结点的)路径;有序树;任何一棵非空树是一个二元组 Tree = (root,F) 其中 root 被称为根结点 F 被称为子树森林;树的基本操作;GetParent   读取父元素 Child    定位结点的孩子 Sibling    定位结点的兄弟 InsertTree 插入子树 DeleteTree 删除子树 Traverse    树遍历 ;对比树型结构和线性结构的结构特点;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;二叉树 ; 二叉树或为空树,或是由一个根结点加上两棵分别称为左子树和右子树的、互不交叉的二叉树组成;二叉树的五种基本形态;二叉树 的重要特性; 性质 1 : 在二叉树的第 i 层上至多有2i-1 个结点。 (i≥1);性质 2 : 深度为 k 的二叉树上至多含 2k-1 个结点(k≥1)。; 性质 3 : 对任何一棵二叉树,若它含有n0 个叶子结点、n2 个度为 2 的结点,则必存在关系式:n0 = n2+1。;两类特殊的二叉树:;性质 4 : 具有 n 个结点的完全二叉树的深度为 ? log2n? +1 。;性质 5 :;练习:已知一棵树的度为m,其中有n1个度为1的结点,n2个度为2的结点,……nm个度为m的结点,问这棵树有多少个叶子结点? 假设叶子结点个数为n0个,则树种结点总数为:n0+n1+n2+…+nm 由性质1得整棵树中结点的个数为: n1+2n2+…mnm+1 整理得:n0=n2+2n3+…+(m-1)nm+1;InitBiTree   初始化,构造一棵空二叉树。 DcestroyBiTree 销毁二叉树 CreateBiTree 构造一棵以指定元素为根的二叉树 Clear     清除二叉树 Empty    查询是否为空二叉树 Size     获取二叉树的规模(结点数) Depth     获取二叉树的深度 GetRoot    读取二叉树根元素的值 SetElem    修改指定元素的值 Locate    定位指定元素 Parent    定位指定元素的父结点;LeftChild   定位指定元素的左孩子 RightChild   定位指定元素的右孩子 LeftSibling  定位指定元素的左兄弟 RightSibling  定位指定元素的右兄弟 GetLeft       读取左孩子 GetRight      读取右孩子 GetParent     读取父元素 InsertLeft     插入左子树 InsertRight     插入右子树 PreOrderTraverse  先序遍历 InOrderTraverse  中序遍历 PostOrderTraverse 后序遍历;二叉树的存储结构; 顺序存储一棵二叉树时,首先对该树中每个结点进行编号,自顶向下,同一层自左向右连续给结点编号1,2,…, n,然后以各结点的编号为下标,把各结点的值对应存储到一个一维数组中。每个结点的编号与等深度的满二叉树中对应结点的编号相同。 ;完全二叉树的数组表示 ; ;A; 单支树;链表表示; 最常使用二叉链表作二叉树的存储结构,下面介绍二叉链表的存储结构;// 二叉树结点类模板 template class ElemType struct BinTreeNode { // 数据成员: ElemType data; // 数据域 BinTreeNodeElemType *leftChild; // 左孩子 BinTreeNodeElemType *rightChild; // 右孩子 };;// 二叉树类模板 template class ElemType class BinaryTree { protected: // 二叉树的数据成员: BinTreeNodeElemType *root; int size; //结点个数 public:   二叉链表操作的成员函数原型声明 }; ;练习: 1.n个结点的二叉树的链接存储结构中,有多少个指针域为空,多少个不空? 不空:n-1 空指针域:2n-(n-1)=n+1; 二叉树遍历 (Binary Tree Traversal); 顺着某一条搜索路径巡访二叉树中的结点,使得每个结点均被访问一次,而且仅被访问一

文档评论(0)

wuyoujun92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档