二叉树遍历前序中序后序代码(二叉树求前,中,后序遍历)

:暂无数据 2026-06-29 18:50:06 :0

二叉树遍历前序中序后序代码(二叉树求前,中,后序遍历)

大家好,今天小编来为大家解答以下的问题,关于二叉树遍历前序中序后序代码,二叉树求前,中,后序遍历这个很多人还不知道,现在让我们一起来看看吧!

本文目录

二叉树求前,中,后序遍历

是不是算法?
这是递归算法
void PreOrder(BiTree T){//先序遍历
if(T==NULL)
return ;
printf(T-》data);
PreOrder(T-》lchild);
PreOrder(T-》rchild);
}
void InOrder(BiTree T){//中序遍历
if(T==NULL)
return ;
InOrder(T-》lchild);
printf(T-》data);
InOrder(T-》rchild);
}
void PostOrder(BiTree T){//后序遍历
if(T==NULL)
return ;
PostOrder(T-》lchild);
PostOrder(T-》rchild);
printf(T-》data);
}

建立一个二叉树实现二叉树的先序中序后序和遍历

#include 《stdio.h》
#define N 100
typedef struct node
{ char data;
struct node *lchild,*rchild;
}BTNode;
/*---二叉树的建立---*/
BTNode *createbintree()
{
BTNode *t;
char x;
scanf("%c",&x);
if (x==’#’) t=NULL;
else
{
t=(BTNode *)malloc(sizeof(BTNode));
t-》data=x;
t-》lchild=createbintree();
t-》rchild=createbintree();
}
return(t);
}
/*---先序遍历算法---*/
void preorder(BTNode *t)
{
if(t!=NULL)
{
printf("%c ",t-》data);
preorder(t-》lchild);
preorder(t-》rchild);
}
}
/*---中序遍历算法(递归算法)---*/
void inorder(BTNode *t)
{
if(t!=NULL)
{
inorder(t-》lchild);
printf("%c ",t-》data);
inorder(t-》rchild);
}
}
/*---后序遍历算法---*/
void postorder(BTNode *t)
{
if(t!=NULL)
{
postorder(t-》lchild);
postorder(t-》rchild);
printf("%c ",t-》data);
}
}
/*---中序遍历算法(非递归算法)---*/
void inorder1(BTNode *t)
{
int i=0;
BTNode *a,*p;
if(t==NULL) return;
p=t;
do
{
while(p)
{
a=p;
p=p-》lchild;
}
if(i!=0)
{
p=a;
printf("%c ",p-》data);
p=p-》rchild;
}
}while(i!=0 || p);
}
/*---互换左右孩子算法---*/
void swap(BTNode *t)
{
BTNode *p;
if(t!=NULL || (t-》lchild==NULL && t-》rchild==NULL))
{
p=t-》lchild;
t-》lchild=t-》rchild;
t-》rchild=p;
swap(t-》lchild);
swap(t-》rchild);
}
}
/*---选择函数---*/
void select(BTNode *t)
{
int m,n;
printf("\nselect the algorithm\n1. Preorder\n2. Inorder(Recursive)\n3. Inorder(Non-recursive)\n4. Postorder\n5. Swap lchild and rchild\n");
scanf("%d",&m);
switch(m)
{
case 1:preorder(t);break;
case 2:inorder(t);break;
case 3:inorder1(t);break;
case 4:postorder(t);break;
case 5:swap(t);preorder(t);break;
default:printf("ERROR!! Please select again...\n");select(t);
}
printf("\n\n1. Continue\n2. Exit\n");
scanf("%d",&n);
switch(n)
{
case 2:break;
case 1:
default:select(t);
}
}
void main()
{
BTNode *t;
printf("Please input the sequence of the bintree..\nPS:a ’#’ for NULL\nExample:’AB#C#D##EF##G##’!\n");
printf("\nbintree:");
t=createbintree();
select(t);
}

懂数据结构的进,求二叉树遍历(前序、中序、后序)方法的详解,最好有几个实例讲解

#include《iostream》
#include《string》
using namespace std;
int i=0;
class Node
{
public:
Node(char temp)
{
data=temp;
lchild=NULL;
rchild=NULL;
}
~Node()
{
}
public:
char data;
Node *lchild;
Node *rchild;
};

void creattree(Node *&T)
{
char ch;
cout《《"请输入字符:"《《endl;
cin》》ch;
if(ch==’#’)
{
T=NULL;
return;
}
else
{
T=new Node(ch);
i++;
if(i》=5)
return;
creattree(T-》lchild);
creattree(T-》rchild);
}
}
void PreOrderTraverse(Node *&T)
{
if(T==NULL)
{
cout《《"该二叉树没有任何元素"《《endl;
exit(0);
}
else
{
cout《《T-》data《《"\t";
if(T-》lchild!=NULL)
PreOrderTraverse(T-》lchild);
if(T-》rchild!=NULL)
PreOrderTraverse(T-》rchild);
}
}
int main()
{
Node *T=NULL;
int n=0;
cout《《"开始创建二叉树:"《《endl;
creattree(T);
cout《《"以下开始用先序法遍历二叉树:"《《endl;
PreOrderTraverse(T);
delete T;
return 0;
}
/*
#include 《iostream》
using namespace std;
class Node
{
public:
int data;
Node *parent;
Node *left;
Node *right;
public:
Node():data(-1),parent(NULL),left(NULL),right(NULL){}
Node(int num):data(num),parent(NULL),left(NULL),right(NULL){}
};
class Tree
{
public:
Tree(int num,int len)
{
root=new Node(num);
for(int i=1;i《len;i++)
insertNode1(num);
}
void insertNode1(int data);//插入节点
Node *searchNode(int data);
void deleteNode(int data);
void traver();
void InOrderTree(Node *current);
private:
Node * searchNode(Node *current,int data);
void deleteNode(Node *current);
private:
Node * root;
};
void Tree::traver()
{
if(root==NULL)
return;
InOrderTree(root);
}
void Tree::InOrderTree(Node *current)
{
if(current!=NULL)
{
InOrderTree(current-》left);
cout《《current-》data《《"";
InOrderTree(current-》right);
}
}
void Tree::insertNode1(int data)
{
Node *p,*par;
Node *newNode=new Node(data);
p=par=root;
while(p!=NULL)
{
par=p;
if(data》p-》data)
p=p-》right;
if(data《p-》data)
p=p-》left;
else if(data==p-》data)
{
delete newNode;
return;
}
}
newNode-》parent=par;
if(par-》data》newNode-》data)
par-》left=newNode;
else
par-》right=newNode;
}
Node * Tree::searchNode(Node *current,int data)
{
if(data《current-》data)
{
if(current-》left==NULL)
return NULL;
return searchNode(current-》left,data);
}
else if(data》current-》data)
{
if(current-》right==NULL)
return NULL;
return searchNode(current-》right,data);
}
return current;
}
void Tree::deleteNode(Node *current)
{
if(current-》left!=NULL)
deleteNode(current-》left);
if(current-》right!=NULL)
deleteNode(current-》right);
if(current-》parent==NULL)
{
delete current;
root=NULL;
return;
}
if(current-》parent-》data》current-》data)
current-》parent-》left=NULL;
if(current-》parent-》parent-》data《current-》data)
current-》parent-》right=NULL;
delete current;
}
int main(void)
{
int array={1,2,5,6,8,3,4};
Tree tree(array,6);
tree.traver();
return 0;
}
剩下的自己完善吧,数据结构这东西,你得知道什么是值传递,引用传递;知道堆栈和自由存储区。然后对C或C++有精准的认识,剩下的你会随意了

关于本次二叉树遍历前序中序后序代码和二叉树求前,中,后序遍历的问题分享到这里就结束了,如果解决了您的问题,我们非常高兴。

二叉树遍历前序中序后序代码(二叉树求前,中,后序遍历)

本文编辑:admin

更多文章:


怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

怎么做网站网页归档(网页应该怎么做网页设计有哪些要求)

大家好,怎么做网站网页归档相信很多的网友都不是很明白,包括网页应该怎么做网页设计有哪些要求也是一样,不过没有关系,接下来就来为大家分享关于怎么做网站网页归档和网页应该怎么做网页设计有哪些要求的一些知识点,大家可以关注收藏,免得下次来找不到哦

2026年10月11日 05:30

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

跷二郎腿太低好吗?想要通过贴墙站改正二郎腿影响的话,有哪些要点需要注意

本篇文章给大家谈谈二郎腿贴地,以及跷二郎腿太低好吗对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。

2026年10月11日 05:10

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

易语言点击js按钮(易语言网页填表怎样点击链接为“javascript:void(0)“的按钮)

本篇文章给大家谈谈易语言点击js按钮,以及易语言网页填表怎样点击链接为“javascript:void(0)“的按钮对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要

2026年10月11日 03:00

regards(Regards,什么意思)

regards(Regards,什么意思)

其实regards的问题并不复杂,但是又很多的朋友都不太了解Regards,什么意思,因此呢,今天小编就来为大家分享regards的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:10

dom4j文档(如何去掉用dom4j生成的XML文档中的)

dom4j文档(如何去掉用dom4j生成的XML文档中的)

其实dom4j文档的问题并不复杂,但是又很多的朋友都不太了解如何去掉用dom4j生成的XML文档中的,因此呢,今天小编就来为大家分享dom4j文档的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!

2026年10月11日 01:00

compare with造句(用compared with和compared to造句)

compare with造句(用compared with和compared to造句)

“compare with造句”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看compare with造句(用compared with和compared to造句)!

2026年10月10日 23:30

xshell软件(Xshell怎么更改字体大小)

xshell软件(Xshell怎么更改字体大小)

各位老铁们好,相信很多人对xshell软件都不是特别的了解,因此呢,今天就来为大家分享下关于xshell软件以及Xshell怎么更改字体大小的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

2026年10月10日 22:50

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

tensorflow与keras对应版本(为什么tensorflow2.8没有keras)

各位老铁们好,相信很多人对tensorflow与keras对应版本都不是特别的了解,因此呢,今天就来为大家分享下关于tensorflow与keras对应版本以及为什么tensorflow2.8没有keras的问题知识,还望可以帮助大家,解决

2026年10月10日 22:10

个人网站首页界面(深圳社会保险服务个人网页主页)

个人网站首页界面(深圳社会保险服务个人网页主页)

“个人网站首页界面”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看个人网站首页界面(深圳社会保险服务个人网页主页)!

2026年10月10日 22:00

maven仓库jar网站(如何在maven仓库中添加jar包)

maven仓库jar网站(如何在maven仓库中添加jar包)

这篇文章给大家聊聊关于maven仓库jar网站,以及如何在maven仓库中添加jar包对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。

2026年10月10日 19:50

最近更新

oppo r813t卡刷包(oppo r813s可以刷r813t刷机包)
2026-10-11 10:00:25 浏览:0
热门文章

by网站域名444(444ppp现在是什么域名)
2026-08-19 20:20:31 浏览:13
韩国大片视频mv(韩国20个感人mv)
2026-07-11 13:10:02 浏览:12
标签列表