发布网友 发布时间:2022-04-24 05:54
共2个回答
热心网友 时间:2023-10-03 15:04
#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data;
struct node *lchild,*rchild;//
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
char ch;
ch=getchar();
if (ch == ' ')
T = 0;
else {
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;//生成根节点
CreatBiTree(T->lchild);//构造左子树
CreatBiTree(T->rchild);//构造右子树
}
}
void preorder(BiTree T)//前序遍历
{
if (T!=NULL){
printf ("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void inorder(BiTree T)//中序遍历
{
if (T!=NULL){
inorder(T->lchild);
printf ("%c",T->data);
inorder(T->rchild);
}
}
void postorder(BiTree T)//后序遍历
{
if (T!=NULL){
postorder(T->lchild);
postorder(T->rchild);
printf ("%c",T->data);
}
}
void main ()
{
cout<<"请输入要创建的二叉树包括空格:"<<endl ;
BiTree T;
CreatBiTree(T);//创建二叉树
cout<<"前序遍历的结果为:"<<endl;
preorder(T);
cout<<endl;
cout<<"中序遍历的结果为:"<<endl;
inorder(T);
cout<<endl;
cout<<"后序遍历的结果为:"<<endl;
postorder(T);
}
热心网友 时间:2023-10-03 15:04
开心的kk 你个LJ 抄也不要抄的这明显啊
\*********************************************
为了能在叶子节点返回,我们得多添加叶子节点,使所有的叶子节点都为NULL,他们的直为'?'.
运行该程序,输入ABD??EG???CFH??I?J???+回车
输出first:ABDEGCFHIJ middle:DBGEAHFIJC
\*********************************************\
#include <stdio.h>
#include <stdlib.h>
#define NULLKEY '?'
typedef struct btnode
{
char data;
struct btnode *lchild,*rchild;
}btnode,*bitree;
bitree preCreateBitree(bitree &root)
{
char ch;
scanf("%c",&ch);
if(ch==NULLKEY)
{
root=NULL;
return(root);
}
else
{
root=(bitree)malloc(sizeof(btnode));
root->data=ch;
preCreateBitree(root->lchild);
preCreateBitree(root->rchild);
return(root);
}
}
void fsearch(bitree root)
{
if(root==NULL)
return ;
else
{
printf("%c",root->data); //先序遍历每个结点的值
fsearch(root->lchild);
fsearch(root->rchild);
}
}
void msearch(bitree root)
{
if(root==NULL)
return ;
else
{
msearch(root->lchild);
printf("%c",root->data); //中序遍历每个结点的值
msearch(root->rchild);
}
}
void main()
{
bitree root;
root=preCreateBitree(root);
printf("first:");
fsearch(root);
printf("\n");
printf("middle:");
msearch(root);
printf("\n");
}
热心网友 时间:2023-10-03 15:04
#include<iostream.h>
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data;
struct node *lchild,*rchild;//
}BiTNode,*BiTree;
void CreatBiTree(BiTree &T)
{
char ch;
ch=getchar();
if (ch == ' ')
T = 0;
else {
T=(BiTNode*)malloc(sizeof(BiTNode));
T->data=ch;//生成根节点
CreatBiTree(T->lchild);//构造左子树
CreatBiTree(T->rchild);//构造右子树
}
}
void preorder(BiTree T)//前序遍历
{
if (T!=NULL){
printf ("%c",T->data);
preorder(T->lchild);
preorder(T->rchild);
}
}
void inorder(BiTree T)//中序遍历
{
if (T!=NULL){
inorder(T->lchild);
printf ("%c",T->data);
inorder(T->rchild);
}
}
void postorder(BiTree T)//后序遍历
{
if (T!=NULL){
postorder(T->lchild);
postorder(T->rchild);
printf ("%c",T->data);
}
}
void main ()
{
cout<<"请输入要创建的二叉树包括空格:"<<endl ;
BiTree T;
CreatBiTree(T);//创建二叉树
cout<<"前序遍历的结果为:"<<endl;
preorder(T);
cout<<endl;
cout<<"中序遍历的结果为:"<<endl;
inorder(T);
cout<<endl;
cout<<"后序遍历的结果为:"<<endl;
postorder(T);
}
热心网友 时间:2023-10-03 15:04
开心的kk 你个LJ 抄也不要抄的这明显啊
\*********************************************
为了能在叶子节点返回,我们得多添加叶子节点,使所有的叶子节点都为NULL,他们的直为'?'.
运行该程序,输入ABD??EG???CFH??I?J???+回车
输出first:ABDEGCFHIJ middle:DBGEAHFIJC
\*********************************************\
#include <stdio.h>
#include <stdlib.h>
#define NULLKEY '?'
typedef struct btnode
{
char data;
struct btnode *lchild,*rchild;
}btnode,*bitree;
bitree preCreateBitree(bitree &root)
{
char ch;
scanf("%c",&ch);
if(ch==NULLKEY)
{
root=NULL;
return(root);
}
else
{
root=(bitree)malloc(sizeof(btnode));
root->data=ch;
preCreateBitree(root->lchild);
preCreateBitree(root->rchild);
return(root);
}
}
void fsearch(bitree root)
{
if(root==NULL)
return ;
else
{
printf("%c",root->data); //先序遍历每个结点的值
fsearch(root->lchild);
fsearch(root->rchild);
}
}
void msearch(bitree root)
{
if(root==NULL)
return ;
else
{
msearch(root->lchild);
printf("%c",root->data); //中序遍历每个结点的值
msearch(root->rchild);
}
}
void main()
{
bitree root;
root=preCreateBitree(root);
printf("first:");
fsearch(root);
printf("\n");
printf("middle:");
msearch(root);
printf("\n");
}