c语言二叉树建立、遍历、交换子树代码

c语言二叉树建立、遍历、交换子树代码

ID:8970421

大小:33.00 KB

页数:5页

时间:2018-04-13

c语言二叉树建立、遍历、交换子树代码_第1页
c语言二叉树建立、遍历、交换子树代码_第2页
c语言二叉树建立、遍历、交换子树代码_第3页
c语言二叉树建立、遍历、交换子树代码_第4页
c语言二叉树建立、遍历、交换子树代码_第5页
资源描述:

《c语言二叉树建立、遍历、交换子树代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、C语言二叉树建立,遍历(递归与非递归),交换子树(代码)//C版二叉树建立,遍历(递归与非递归),交换子树#include#include#includeusingnamespacestd;//建树typedefstructNode{ intdata; Node*lchild,*rchild;}btree;btree*create(inta[],intn,inti){ btree*t; if(i>n)  t=NULL; else {  t=newbtree;  t->data=a[i-1]

2、;  t->lchild=create(a,n,2*i);  t->rchild=create(a,n,2*i+1); } returnt;}//前序遍历(递归)voidpreorder(btree*p){ if(p!=NULL) {    cout<data<lchild);  preorder(p->rchild); }}//前序遍历(非递归)voidpreorder1(btree*p){ stacks; while(!s.empty()

3、

4、p!=NULL) {  wh

5、ile(p!=NULL)  {   cout<data<lchild;  }  p=s.top();  s.pop();  p=p->rchild; }}//中序遍历(递归)voidinorder(btree*p){ if(p!=NULL) {  inorder(p->lchild);  cout<data<rchild); }}//中序遍历(非递归)voidinorder1(btree*p){

6、 stacks; while(!s.empty()

7、

8、p!=NULL) {  while(p!=NULL)  {   s.push(p);   p=p->lchild;  }  p=s.top();  cout<data<rchild; }}//后序遍历(递归)voidpostorder(btree*p){ if(p!=NULL) {  postorder(p->lchild);  postorder(p->rchild);  cout

9、<data<s; nodepost; while(!s.empty()

10、

11、p!=NULL) {  while(p!=NULL)  {     post.t=p;     post.flag=0;     s.push(post);     p=p->lchild;  }  if(!s.empty())  {   post=s.top();   s.pop()

12、;   if(post.flag==0)   {    post.flag=1;    s.push(post);    p=(post.t)->rchild;   }   else   {    cout<<(post.t)->data<q; btree*t; if(p!=NULL)  q.push(p); while(!q.empty()) {  t=q

13、.front();  cout<data<lchild!=NULL)     q.push(t->lchild);  if(t->rchild!=NULL)   q.push(t->rchild); }}//对二叉树t中所有结点的左右子树进行交换voidexchange(btree*p){ btree*t; if(p!=NULL) {    t=p->lchild;    p->lchild=p->rchild;    p->rchild=t;    exchange(p->lch

14、ild);    exchange(p->rchild); }}voidmain(){ btree*root; inta[5]={1,2,3,4,5}; root=create(a,5,1); cout<<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。