第五章 二叉树.PPT

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

二叉树的相关概念 (1)结点的度。结点所拥有的子树的个数称为该结点的度。 (2)叶结点。度为0的结点称为叶结点,或者称为终端结点。 (3)分枝结点。度不为0的结点称为分支结点,或者称为非终端结点。一棵树的结点除叶结点外,其余的都是分支结点。 (4)左孩子、右孩子、双亲。树中一个结点的子树的根结点称为这个结点的孩子。这个结点称为它孩子结点的双亲。具有同一个双亲的孩子结点互称为兄弟。 (5)路径、路径长度。如果一棵树的一串结点n1,n2,…,nk有如下关系:结点ni是ni+1的父结点(1≤ik),就把n1,n2,…,nk称为一条由n1至nk的路径。这条路径的长度是k-1。 (6)祖先、子孙。在树中,如果有一条路径从结点M到结点N,那么M就称为N的祖先,而N称为M的子孙。 (7)结点的层数。规定树的根结点的层数为1,其余结点的层数等于它的双亲结点的层数加1。 (8)树的深度。树中所有结点的最大层数称为树的深度。 (9)树的度。树中各结点度的最大值称为该树的度。 二叉树的抽象数据类型 二叉树结点的ADT template class Elem class BinNode{ public: virtual Elem val()=0; virtual void setVal(const Elem)=0; virtual BinNode* left()=0; virtual BinNode* right()=0; virtual void setLeft(BinNode*)=0; virtual void setLeft(BinNode*)=0 ; virtual bool isLeaf()=0; } 一般二叉树 二叉树的二叉链表存储表示 Elem val(){return data;} void setVal(const Elem e){data=e;} inline BinTreeNodeElem* left(){return lchild;} inline BinTreeNodeElem* right(){return rchild;} void setLeft(BinTreeNodeElem* left){lchild=left;} void setRight(BinTreeNodeElem* right){rchild=right;} bool isLeaf() {return (lchild==NULL)(rchild=NULL);} }; 有时也可用数组的下标来模拟指针,即开辟三个一维数组Data ,lchild,rchild 分别存储结点的元素及其左,右指针域; 二叉查找树的C++类说明 template class Key, class Elem, class KEComp, class EEComp class BST: public DictionaryKey, Elem, KEComp, EEComp{ private: BinTreeNodeElem * root; Elem RefValue int nodecount; void clearhelp(BinTreeNodeElem*); BinTreeNodeElem* inserthelp(BinTreeNodeElem*,const Elem); BinTreeNodeElem* deletemin(BinTreeNodeElem*,BinTreeNodeElem* ) ; BinTreeNodeELem* removehelp(BinTreeNodeElem*, const Key, BinTreeNodeElem*); bool findhelp(BinTreeNodeElem*, int) const; void printhelp(BinTreeNodeElem* ,int) const; public: BST( ) {root=NULL; nodecount=0;} ~ BST(){clearhelp(root);} void clear(){clearhelp(root); root=NULL; nodecount=0;} bool insert(const Elem e) {root=inserthelp(root,e); nodecount++; return true;} bool remove(const KeyK, Elem e){ BinTreeNodeElem*t=N

文档评论(0)

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

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

1亿VIP精品文档

相关文档