【c语言】构建二叉树并前序遍历
2017-08-25 16:20
211 查看
#include <stdio.h>
#include <stdlib.h>
#define SIZE 50
//数的结点结构
typedef struct NODE{
int data;
struct NODE *left,*right;
}Node;
typedef struct stack{
int top;
Node *db[SIZE];//保存树的结点
}stack;
Node *creat_tree(void)
{
Node *t;
int x;
scanf("%d",&x);
if(x == 0)
t = NULL;
else{
t = (Node*)malloc(sizeof(Node));
t ->data = x;
printf("输入%d结点的左子结点:",t->data);
t->left = creat_tree();
printf("输入%d结点的右子结点:",t->data);
t->right = creat_tree();
}
return t;
}
//非递归实现前序遍历二叉树
void preVisit(Node *T)
{
//初始化栈
stack *s = (stack*)malloc(sizeof(stack));
s->top = 0;
while(T || s->top > 0){
if(T){
printf("3%d",T->data);
s->db[s->top++] = T;
T = T->left;
}
else{
T = s->db[--s->top];
T = T->right;
}
}
}
//递归实现前序遍历
/*
void preVisit(Node *T)
{
if(T){
printf("%d",T->data);
preVisit(T->left);
preVisit(T->right);
}
}
*/
int main(void)
{
Node *T = NULL;
printf("二叉数的建立,以输入‘0’结束\n");
printf("输入根结点: ");
T = creat_tree();
printf("二叉树建立完毕\n");
printf("前序遍历二叉树: \n");
preVisit(T);
return 0;
}
#include <stdlib.h>
#define SIZE 50
//数的结点结构
typedef struct NODE{
int data;
struct NODE *left,*right;
}Node;
typedef struct stack{
int top;
Node *db[SIZE];//保存树的结点
}stack;
Node *creat_tree(void)
{
Node *t;
int x;
scanf("%d",&x);
if(x == 0)
t = NULL;
else{
t = (Node*)malloc(sizeof(Node));
t ->data = x;
printf("输入%d结点的左子结点:",t->data);
t->left = creat_tree();
printf("输入%d结点的右子结点:",t->data);
t->right = creat_tree();
}
return t;
}
//非递归实现前序遍历二叉树
void preVisit(Node *T)
{
//初始化栈
stack *s = (stack*)malloc(sizeof(stack));
s->top = 0;
while(T || s->top > 0){
if(T){
printf("3%d",T->data);
s->db[s->top++] = T;
T = T->left;
}
else{
T = s->db[--s->top];
T = T->right;
}
}
}
//递归实现前序遍历
/*
void preVisit(Node *T)
{
if(T){
printf("%d",T->data);
preVisit(T->left);
preVisit(T->right);
}
}
*/
int main(void)
{
Node *T = NULL;
printf("二叉数的建立,以输入‘0’结束\n");
printf("输入根结点: ");
T = creat_tree();
printf("二叉树建立完毕\n");
printf("前序遍历二叉树: \n");
preVisit(T);
return 0;
}
相关文章推荐
- LeetCode:105_Construct Binary Tree from Preorder and Inorder Traversal | 根据前序和中序遍历构建二叉树 | Medium
- 基于先序遍历和中序遍历序列构建二叉树结构【C语言】
- 根据二叉树的前序遍历和中序遍历构建二叉树的c语言完整代码
- C语言 二叉树构建与前中后序遍历
- 由二叉树的中序遍历, 前序遍历, 构建二叉树
- 根据树的前序遍历与中序遍历构建二叉树
- 根据树的前序遍历与中序遍历构建二叉树
- 【面试算法系列】已知二叉树的前序和中序遍历重建二叉树 - C语言实现
- 构建二叉树(据前序遍历结果)--- 前序遍历二叉树(递归与非递归)
- 已知二叉树的前序和中序遍历,构建该二叉树
- 已知二叉树的前序和中序遍历,构建该二叉树
- 给定二叉树的前序遍历结果,输出所有可能的中序遍历的结果
- java实现二叉树的构建以及3种遍历方法
- C语言实现二叉树的各种遍历及求解深度
- c语言实现二叉树的先序遍历,中序遍历,后序遍历
- 微软100题(43)二叉树的前序遍历
- C语言基本数据结构之二(二叉树的三种遍历,节点数以及深度算法)
- java操作二叉树:构建二叉树;前序、中序、后续、层次遍历
- 简单二叉树的构造,前序遍历顺序为;中序遍历顺序为;后序遍历顺序为;
- C语言实现二叉树的常用的算法(递归与非递归实现遍历)