- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
1 1 二叉树性质 性质1: 链式存储结构 二叉链表 二叉树的二叉链表类 class BiTree // 二叉树类 {public: BiTree(){root=NULL;} ~BiTree(){destroy(root) ;} void creat(); void preorder() //先序遍历 { preorder(root); } void inorder() //中序遍历 { inorder(root); } void postorder() //后序遍历 { postorder(root); } //删除二叉树所有结点 private: NodeType *root; preorder(NodeType *p); //先序遍历 inorder(NodeType *p); //中序遍历 postorder(NodeType *p); //后序遍历 void destroy(NodeType *p); //删除二叉树所有结点 //……. }; 二叉树的建立 void BiTree::creat() { NodeType *q, *s[20]; ElemType x;int i,j; root=NULL; cout\n i,x=; cinix; while(i!=0 x!=0) { q=new NodeType; // 产生一个结点 q-data=x; q-lch=NULL; q-rch=NULL; s[i]=q; if (i==1) root=q; // q为树根root结点 else { j=i/2; // j为双亲结点编号 if ((i%2)==0) s[j]-lch=q; else s[j]-rch=q; } cout\n i,x=; cinix; }//while end } // creat end 二叉树的遍历 void BiTree::preorder(NodeType *p) { if (p != NULL) { coutp-data ; preorder(p-lch); preorder(p-rch); } } 三、二叉树遍历算法的应用 1.将访问二叉树结点的内容扩充 2. 将二叉树遍历算法的思想引申 void BiTree::injushu() { int numb=0; injushu(root,numb); cout“\n 二叉树结点个数=numb; }void BiTree::injushu(NodeType *t,int m) { if( t != NULL) { injushu(t-lch,m); m++; //coutt-data; injushu(t-rch,m); } } int main(){ BiTree tree; //声明创建二叉树对象,调用构造函数 int k; do{ cout\n\n; cout\n\n 1. 建立二叉树; cout\n\n 2. 交换左右子树 ; cout\n\n 3. 求二叉树深度 “; cout”\n\n 4. 求二叉树结点个数“;
文档评论(0)