问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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

发布网友 发布时间:2022-04-24 05:54

我来回答

2个回答

热心网友 时间:2022-04-18 21:39

#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");
}

热心网友 时间:2022-04-18 22:57

#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;
}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
我女朋友我在同事面前说她是我媳妇她默认,在她组长面前就不承认了什么... 跨省迁户口需要的手续 户口跨省迁移需要哪些手续? cf空白名字怎么打(cf空白名字怎么打2021) 关于旅行的电影 就是一个人旅行放松心灵那种 不要纪录片 模拟人生2高斯的遗产给儿子还是女儿 模拟人生2如何跟高斯结婚啊? 模拟人生2高斯怎么找到贝拉,找到后能怎么办? 我的米2插上充电器后屏幕一直闪,快速的一下显示充电一下没在充电。请 ... ...屏幕乱闪 充不进去电 用手机连接电脑也是一样 数据结构二叉树 数据结构C语言版 二叉树构造算法实验 在键盘上怎么输入 重建二叉树的程序问题 C++二叉树构造问题 怎么结束呢 C语言,现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请 现有一棵二叉树和一个有序数组,要求通过这棵二叉树构造有序数组。它们的类型声明如下,请定义有序数组 Java二叉树构造问题 要求:从控制台输入一行扩展二叉树的字符串,然后根据这个字符串构造二叉树。THX.. 二叉树c语言实现 二叉树能干吗 关于C语言二叉树! 二叉树的构造问题 c语言数据结构 二叉树构造 输出问题 二叉树由哪3个基本元素组成? 怎么线索二叉树? 构造二叉树,谢谢 先序构建二叉树 C语言:一个二叉树构造问题 C语言 二叉树构造问题 二叉树构造问题 中国抗日英雄 统编(部编)四年级语文下册9《短诗三首》教学设计及教学反思 家庭居住湿度多少为标准? 古诗的教学反思怎么写 教学古诗望天门山和饮湖上初晴后雨教学反思 破阵子为陈同甫赋壮词以寄之教学反思 房间内多少温、湿度比较合适? 四年级下册古诗词三首感悟 17.《古诗三首:书湖阴先生壁》教学反思 室内正常的湿度是多少 (教学反思参考1)古诗三首 元日清明九月九日忆山东兄弟 四年级下册《古诗词三首》的读后感 房间内的湿度多少较合适? 四年级下册《古诗词三首》的读后感? 四下23古诗词三首预习卡评课 室内空气湿度多少合适? 关于四年级下册第一课古诗词三首的问题有哪些 古诗词三首四年级下册23课的教案附答案 部编人教版五年级语文上册《21 古诗词三首》教学设计及教学反思 点一下就行,在四年级下册第1课是古诗词三首能提出什么疑惑的问题? 对女儿小学毕业的感言?