二叉树交换左右子树的三种实现方式
MySQL触发器
二叉树交换左右子树的三种实现方式
隐私政策顺序存储结构
交换左右子树实际上就是同层之间交换位置,在顺序存储结构下,先确定树的深度,再划分层,每个层内做交换即可。
链式存储结构
递归实现很简单,非递归可以借助栈或队列辅助实现。
递归代码:
void ReChange(BiTree root)
{
if(root==NULL) return;
else
{
BiTree temp=root->lchild;
root->lchild=root->rchild;
企业微信root->rchild=temp;
ReChange(root->端口测试;lchild)天气预报;
ReChange(root->rchild);
}
}
非递归代码:
void Change(BiTree root)
{
BiTree Queuenvm[MAXSIZE];
int front=-1;
int rear=0;
Queue[rear]=root;
while(rear!=front)
{婚纱摄影网系统
BiTree p=Queue[++front];
BiTree temp=p->lchild;
p->lchild=p->rchild;
p->rchild=temp;
if(p->lchild) Queue[++rear]=p->lchild;
if(p->rchild) Queue[++rear]=p->rchild;
}
}
完整代码:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<iostream>
using namespace std;
typedef char DataType;
#define MAXSIZE 100
typedef structJava前后端分离 node
{
DataType data;
struct node *lchild;
struct node *rchild;
}BiTreeNode,*BiTree;
//先序建立二叉树
void CreateBiTree(BiTree &root)
{
char c;
cin>>c;
if(砸壳c==列表'#')
{
root=NULL;
}
else
{
root=(BiTree)malloc(sizeof(BiTreeNode));
root->data=c;
实例分割 CreateB自助报表iTree(root->lchild);
CreateBiTree(root->rchild);
}
}
//递归实现先序遍历
void PreOrder(BiTree root)
{
if(root!=NULL)
{
cout<<root->data<<" ";
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
//递归实现交换左右子树
void ReChange(BiTree root)
{
if(root==NULL) return;
else
{
BiTree temp=root->lchild;
root->lchild=root->rchild;
root->rchild=temp;
ReChange(root->lchild);
ReChange(root->rchild);
}
}
//非递归实现交换左右子树
void Change(BiTree root)
{
BiTree Queue[MAXSIZE];
int front=-1;
int rear=0;
Queue[rear]=root;
while(rear!=front)
{
BiTree p=Queue[++front];
VisDrone BiTree temp&#外观模式61;p->lchild;
p->lchild=p->rchild;
p->rchild=temp;
if(p->lchild) Queue[++rear]=p->lchild;
if(p->rchild) Queue[++rear]=p->rchild;
}
}
//测试序列:ABDG###E##CF#H###
int main()
{
BiTree ESP8266root串口通讯;
CreateBiTree(root);
PreOrder(root);
cout<<endl;
ReChange(root);
PreOrder(root);
cout<<endl;
Change(root)空域;
PreOrder(root);
cout<<endl;
system("pause");
return 0;
}
声明:本站博客内容版权均属于原作者所有,这里所提供资源均只能用于参考学习用,书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。