创建二叉树
Bin_Tree* create_Bin_Tree()
{
int value;
scanf("%d",&value);
if(-1==value){
return NULL; //返回head的值为NULL
}
Bin_Tree* head=(Bin_Tree*)malloc(sizeof(Bin_Tree));
if(NULL==head){
printf("结点创建失败\n");
return NULL;
}
head->data=value;
head->left=create_Bin_Tree();
head->right=create_Bin_Tree();
return head;
}
遍历二叉树
先序遍历:根左右
void travel_Bin_TreeBefore(Bin_Tree* tree)
{
Bin_Tree* p=tree;
if(NULL==p){
return;
}
printf("%d ",p->data);
travel_Bin_TreeBefore(p->left);
travel_Bin_TreeBefore(p->right);
return;
}
中序遍历:左根右
void travel_Bin_TreeCenter(Bin_Tree* tree)
{
Bin_Tree* p=tree;
if(NULL==p){
return;
}
travel_Bin_TreeCenter(p->left);
printf("%d ",p->data);
travel_Bin_TreeCenter(p->right);
return;
}
后序遍历:左右根
void travel_Bin_TreeAfter(Bin_Tree* tree)
{
Bin_Tree* p=tree;
if(NULL==p)
{
return;
}
travel_Bin_TreeAfter(p->left);
travel_Bin_TreeAfter(p->right);
printf("%d ",p->data);
return;
}
头文件
#ifndef __BINARY_TREE_H__
#define __BINARY_TREE_H__
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef int datatype;
typedef struct tree{
datatype data;
struct tree* left;
struct tree* right;
} Bin_Tree;
Bin_Tree* create_Bin_Tree();
void travel_Bin_TreeBefore(Bin_Tree* tree);
void travel_Bin_TreeCenter(Bin_Tree* tree);
void travel_Bin_TreeAfter(Bin_Tree* tree);
#endif
主函数
#include "./03_binary_tree.h"
int main(int argc, const char *argv[])
{
Bin_Tree* tree=create_Bin_Tree();
travel_Bin_TreeBefore(tree);
putchar(10);
travel_Bin_TreeCenter(tree);
putchar(10);
travel_Bin_TreeAfter(tree);
putchar(10);
return 0;
}