博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
交换二叉树中所有结点的左右子树的位置
阅读量:4653 次
发布时间:2019-06-09

本文共 1819 字,大约阅读时间需要 6 分钟。

#include
#include
#include
#define N 50using namespace std;typedef struct tree{ char ch; struct tree *lchild; struct tree *rchild;}BitTree; //数组输入BitTree *CreateTree(int A[], int i, int n){ BitTree *bt; if(i>n) return NULL; else{ bt=(BitTree *)malloc(sizeof(BitTree)); if(A[i]=='#') return NULL; bt->ch=A[i]; bt->lchild=CreateTree(A, 2*i, n); bt->rchild=CreateTree(A, 2*i+1, n); return bt; }} //层次遍历void LayeredOrderTraverse(BitTree *bt);//交换二叉树中所有结点的左右子树位置void ExchangeBT(BitTree *bt){ BitTree *QUEUE[N], *temp, *p=bt; int front = 0, rear = 1; if(p != NULL){ QUEUE[0] = p; while(front < rear){ p = QUEUE[front++]; temp = p->lchild; p->lchild = p->rchild; p->rchild = temp; if(p->lchild != NULL) QUEUE[rear++] = p->lchild; if(p->rchild != NULL) QUEUE[rear++] = p->rchild; } }} int main(){ int A[N]={
'#','A','B','C','D','E','#','F','G','H'}; BitTree *bt=CreateTree(A,1,9); printf("pre-LayeredOrderTraverse:\n"); LayeredOrderTraverse(bt); printf("\n"); ExchangeBT(bt); printf("post-LayeredOrderTraverse:\n"); LayeredOrderTraverse(bt); return 0; }//层次遍历void LayeredOrderTraverse(BitTree *bt){ BitTree *QUEUE[N], *p; int front, rear; if(bt != NULL){ QUEUE[0] = bt; front = 0; rear = 1; while(front < rear){ p = QUEUE[front++]; printf("%c ", p->ch); if(p->lchild != NULL) QUEUE[rear++] = p->lchild; if(p->rchild != NULL) QUEUE[rear++] = p->rchild; } }}

 

转载于:https://www.cnblogs.com/exciting/p/10052011.html

你可能感兴趣的文章
nodejs pm2使用
查看>>
CSS选择器总结
查看>>
mysql中sql语句
查看>>
sql语句的各种模糊查询语句
查看>>
Python20-Day05
查看>>
C#操作OFFICE一(EXCEL)
查看>>
【js操作url参数】获取指定url参数值、取指定url参数并转为json对象
查看>>
移动端单屏解决方案
查看>>
web渗透测试基本步骤
查看>>
使用Struts2标签遍历集合
查看>>
angular.isUndefined()
查看>>
第一次软件工程作业(改进版)
查看>>
网络流24题-飞行员配对方案问题
查看>>
Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用
查看>>
引入css的四种方式
查看>>
iOS开发UI篇—transframe属性(形变)
查看>>
3月7日 ArrayList集合
查看>>
jsp 环境配置记录
查看>>
Python03
查看>>
LOJ 2537 「PKUWC2018」Minimax
查看>>