网站大量收购独家精品文档,联系QQ:2885784924

二叉树及其上基本操作.doc

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

#includeiostream #includestdlib.h #define N 10; template class T struct BinTreeNode{ //二叉树结点类定义 T data; BinTreeNodeT *left,*right; BinTreeNode():leftChild(NULL),rightChild(NULL){} BinTreeNode(T x,BinTreeNodeT *l=NULL,BinTreeNodeT *r=NULL) :data(x),left(l),right(r){} }; template class T class BinTree{ public: BinTree():root(NULL){} BinTree(T value=0):RefValue(value),root(NULL){} BinTree(BinTreeT s); ~BinTree(){Destroy(root);} BinTreeNodeT Getroot()const{return root;} //取根 bool Isempty(){return (root==NULL)?true:false;} BinTreeNodeT * Parent(BinTreeNodeT *current); //寻找父结点 BinTreeNodeT *LeftChild(BinTreeNodeT *current) //寻找左右子结点 {return (current!=NULL)?current-left:NULL;} BinTreeNodeT *RightChild(BinTreeNodeT *current) {return (current!=NULL)?current-right:NULL;} BinTreeNodeT *Setleft(BinTreeNodeT *current){left=current;}//设置左右子结点 BinTreeNodeT *Setright(BinTreeNodeT *current){right=current;} BinTreeNodeT *Create(); //创建树 void Preorder(BinTreeNodeT *t); //先根遍历 void Inorder(BinTreeNodeT *t); //中根遍历 void Postorder(BinTreeNodeT *t); //后根遍历 bool Find(T x); //查找符合数据域条件的结点 void Destroy(BinTreeNodeT subtree); //删除子树 void Del(BinTreeNodeT *p); void out(BinTreeNodeT *t); //以表格形式输出二叉树 private: BinTreeNodeT *root; T RefValue; }; template class T BinTreeNodeT *BinTreeT::Parent(BinTreeNodeT *current) //父结点 { if(current==NULL||Isempty()) return NULL; if(root-left==current||root-right==current) return root; BinTreeNodeT *q; q=Parent(root-left); if(q!=NULL) return q; return q=Parent(root-right); } template class T bool BinTreeT::Find(BinTreeNodeT *t,T x) //符合数据域条件的结点 { if(Isempty()) return false; if(t-data==x) return true; BinTreeNodeT *q; q=Find(t-left,x); if(q!=NULL) return q; return q=Find(t-right,x); } tem

文档评论(0)

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

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

1亿VIP精品文档

相关文档