编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~相关的知识,希望对你有一定的参考价值。

#include<stdio.h>
#include <stdlib.h>
#include <malloc.h>

#define OK  1
#define ERROR  0
#define OVERFLOW  0

typedef char TElemType;
typedef int Status;
typedef struct BiTNode

 TElemType data;
 struct BiTNode *lchild,*rchild;
BiTNode,*BiTree;
typedef enum Link,Thread PointerTag;
typedef struct BiThrNode

 TElemType data;
 struct BiThrNode *lchild,*rchild;
 PointerTag LTag,RTag;
BiThrNode;
typedef BiThrNode *BiThrTree;

BiTree CreateBiTree(BiTree T)    //先序遍历构造二叉树

 char ch;
 scanf("%c",&ch);
 if(ch=='#')    //#代表空指针
  T=NULL;
 else
 
  T=(BiTNode *)malloc(sizeof(BiTNode));    //申请结点
  if(!T)
   exit(OVERFLOW);
  T->data=ch;    //生成根结点
  T->lchild=CreateBiTree(T->lchild);    //构造左子树
  T->rchild=CreateBiTree(T->rchild);    //构造右子树
 
 return T;

Status InOrderTraverse(BiTree T,Status(*visit)(TElemType))
//中序遍历二叉树
 if(T)
 
  if(InOrderTraverse(T->lchild,visit))
   if(visit(T->data))
    if(InOrderTraverse(T->rchild,visit))
     return OK;
  return ERROR;
 
 else
  return OK;

Status PrintElement(TElemType e)

 printf("%-2c",e);
 return OK;

void main()

 BiTree T=NULL;
 printf("请输入构造二叉树的字符序列:");
 T=CreateBiTree(T);
 if(T)
  printf("二叉树建立成功!\\n");
 else
  printf("二叉树构造失败!!!\\n");
 printf("中序遍历二叉树:");
 InOrderTraverse(T,PrintElement);
 printf("\\n");

参考技术A #include <iostream>
#define MAXSIZE 100
using namespace std;
typedef char TElemType;
typedef struct BiTNode
TElemType data;
struct BiTNode *lchild,*rchild;
BiTNode,*BiTree;
bool InOrderTraverse1(BiTree T)
if(T)
cout<<T->data;
InOrderTraverse1(T->lchild);
InOrderTraverse1(T->rchild);


bool InOrderTraverse2(BiTree T)
if(T)
InOrderTraverse2(T->lchild);
cout<<T->data;
InOrderTraverse2(T->rchild);


bool InOrderTraverse3(BiTree T)
if(T)
InOrderTraverse3(T->lchild);
InOrderTraverse3(T->rchild);
cout<<T->data;


bool CreateBiTree(BiTree &T)
char ch;
cin>>ch;
if(ch=='#')
T=NULL;
else
T=new BiTNode;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);


int Depth(BiTree T)
int n,m;
if(T==NULL)
return 0;
else
m=Depth(T->lchild);
n=Depth(T->rchild);
if(m>n)
return(m+1);
else
return(n+1);


int NodeCount(BiTree T)
if(T==NULL)
return 0;
else
return NodeCount(T->lchild)+NodeCount(T->rchild)+1;

int main()

BiTree a;
int height,num;
cout<<"请输入二叉树的元素:\n";
CreateBiTree(a);
cout<<"先序遍历法输出:\n";
InOrderTraverse1(a);
cout<<"\n中序遍历法输出:\n";
InOrderTraverse2(a);
cout<<"\n后序遍历法输出:\n";
InOrderTraverse3(a);
height=Depth(a);
num=NodeCount(a);
cout<<"\n该二叉树深度为:";
cout<<height<<endl;
cout<<"该二叉树结点数为:";
cout<<num;
return 0;

根据二叉树的先序遍历结果输出中序遍历

参考技术A 编一个程序,读入用户输入的一串先序遍历字符串,根据此字符串建立一个二叉树(以指针方式存储)。 例如如下的先序遍历字符串: ABC##DE#G##F### 其中“#”表示的是空格,空格字符代表空树。建立起此二叉树以后,再对二叉树进行中序遍历,输出遍历结果。

输入包括1行字符串,长度不超过100。

可能有多组测试数据,对于每组数据,
输出将输入字符串建立二叉树后中序遍历的序列,每个字符后面都有一个空格。
每个输出结果占一行。

abc##de#g#f###

c b e g d f a

以上是关于编程实现以上二叉树中序遍历操作,输出遍历序列,求写代码~~的主要内容,如果未能解决你的问题,请参考以下文章

4685: 二叉树中序遍历

根据二叉树的先序遍历结果输出中序遍历

(已知二叉树的中后,先中序两序遍历建树)

C++如何实现二叉树的递归遍历?

华为机试真题 C++ 实现二叉树中序遍历

二叉树的遍历