二叉树递归的创建及三种遍历(先序、中序、后序)
2017-10-13 19:12
381 查看
#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define status int
typedef struct bitnode
{
int data;
struct bitnode *lchild;
struct bitnode *rchild;
} bitnode,*sq;
int r=0;
bitnode *q;
void createbitree(sq &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(bitnode *)malloc(sizeof(bitnode));
T->data=ch;
if(r==0)
{
q=T;
r=1;
}
createbitree(T->lchild);
createbitree(T->rchild);
}
}
void Preorder(sq &T)
{
if(T!=NULL)
{
printf("%c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void inorder(sq &T)
{
if(T!=NULL)
{
inorder(T->lchild);
printf("%c",T->data);
inorder(T->rchild);
}
}
void postorder(sq &T)
{
if(T!=NULL)
{
postorder(T->lchild);
postorder(T->rchild);
printf("%c",T->data);
}
}
int main()
{
bitnode *t;
printf("createbitree:");
createbitree(t);
t=q;
printf("Preorder:");
Preorder(t);
printf("\n");
printf("inorder:");
inorder(t);
printf("\n");
printf("postorder:");
postorder(t);
printf("\n");
return 0;
}
#include<iostream>
#include<algorithm>
#include<stdlib.h>
using namespace std;
#define status int
typedef struct bitnode
{
int data;
struct bitnode *lchild;
struct bitnode *rchild;
} bitnode,*sq;
int r=0;
bitnode *q;
void createbitree(sq &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
T=(bitnode *)malloc(sizeof(bitnode));
T->data=ch;
if(r==0)
{
q=T;
r=1;
}
createbitree(T->lchild);
createbitree(T->rchild);
}
}
void Preorder(sq &T)
{
if(T!=NULL)
{
printf("%c",T->data);
Preorder(T->lchild);
Preorder(T->rchild);
}
}
void inorder(sq &T)
{
if(T!=NULL)
{
inorder(T->lchild);
printf("%c",T->data);
inorder(T->rchild);
}
}
void postorder(sq &T)
{
if(T!=NULL)
{
postorder(T->lchild);
postorder(T->rchild);
printf("%c",T->data);
}
}
int main()
{
bitnode *t;
printf("createbitree:");
createbitree(t);
t=q;
printf("Preorder:");
Preorder(t);
printf("\n");
printf("inorder:");
inorder(t);
printf("\n");
printf("postorder:");
postorder(t);
printf("\n");
return 0;
}
相关文章推荐
- 非递归创建二叉树 先序 中序 后序遍历
- 用c语言创建一颗二叉树,用递归方法实现对其进行先序、中序和后序遍历的操作。
- 二叉树的递归创建,先序(中序、后序)递归遍历二叉树
- 二叉树的创建和先序,中序,后序,递归,非递归遍历
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度
- c语言数据结构中二叉树的先序、中序、后序三种递归遍历代码
- 二叉树遍历(包括先序创建二叉树,递归非递归三种遍历)源码
- java 创建二叉树 前序、中序、后续 递归遍历树 和 非递归遍历,递归求树高,递归求树节点数
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度
- 二叉树创建、删除、(递归/非递归)先序(中序/后序)遍历
- 二叉树的先序创建,先序,中序,后序的递归与非递归遍历,层次遍历,叶子结点数及树的深度
- 二叉树的前中后层次遍历(递归+非递归)、创建树(数组、前序+中序、中序加后序)
- 二叉树的前序、中序、后序三种遍历的六种实现方式(递归、非递归)(C++)
- 二叉树 —— 创建 + 先序、中序、后序遍历(递归+非递归)
- 二叉树(先序创建,递归先序,中序,后序遍历)-----1
- 创建、前序、中序、后序递归遍历二叉树
- 二叉树的创建与三种遍历(先序,中序,后序)
- 递归创建二叉树,前序,中序,后序遍历二叉树,广义表创建二叉树,非递归前序,中序,后序遍历二叉树
- 如何利用前序遍历序列和中序遍历序列非递归的创建二叉树
- 二叉树的创建,先序、中序、后序遍历的递归实现以及层序遍历