.c
#include<stdio.h>
#include"bin_tree.h"
#include<stdlib.h>
#include"bin_tree.h"
#include<stdlib.h>
void TreeInit(TreeNode** pRoot){
if (pRoot == NULL){
return;
}
*pRoot = NULL;
}
TreeNode* CreatTreeNode(TreeNodeType value){
TreeNode*new_node = (TreeNode*)malloc(sizeof(TreeNode));
new_node->data = value;
new_node->lchild = NULL;
new_node->rchild = NULL;
return new_node;
}
void TreePreOrder(TreeNode *root){
{
if (root == NULL)
return;
}
printf("%c ", root->data);
TreePreOrder(root->lchild);
TreePreOrder(root->rchild);
return;
}
void TreeInOrder(TreeNode* root){
{
if (root == NULL)
return;
}
TreeInOrder(root->lchild);
printf("%c ", root->data);
TreeInOrder(root->rchild);
return;
}
if (pRoot == NULL){
return;
}
*pRoot = NULL;
}
TreeNode* CreatTreeNode(TreeNodeType value){
TreeNode*new_node = (TreeNode*)malloc(sizeof(TreeNode));
new_node->data = value;
new_node->lchild = NULL;
new_node->rchild = NULL;
return new_node;
}
void TreePreOrder(TreeNode *root){
{
if (root == NULL)
return;
}
printf("%c ", root->data);
TreePreOrder(root->lchild);
TreePreOrder(root->rchild);
return;
}
void TreeInOrder(TreeNode* root){
{
if (root == NULL)
return;
}
TreeInOrder(root->lchild);
printf("%c ", root->data);
TreeInOrder(root->rchild);
return;
}
void TreePostOrder(TreeNode* root){
{
if (root == NULL)
return;
}
TreePostOrder(root->lchild);
TreePostOrder(root->rchild);
printf("%c ", root->data);
return;
}
{
if (root == NULL)
return;
}
TreePostOrder(root->lchild);
TreePostOrder(root->rchild);
printf("%c ", root->data);
return;
}
.h
#pragma once
#include<stdlib.h>
#include<stddef.h>
typedef char TreeNodeType;
#include<stdlib.h>
#include<stddef.h>
typedef char TreeNodeType;
typedef struct TreeNode
{
TreeNodeType data;
struct TreeNode* lchild;
struct TreeNode* rchild;
{
TreeNodeType data;
struct TreeNode* lchild;
struct TreeNode* rchild;
}TreeNode;
void TreeInit(TreeNode** pRoot);
void TreePreOrder(TreeNode* root);
void TreeInOrder(TreeNode* root);
void TreePostOrder(TreeNode* root);
TreeNode* CreatTreeNode(TreeNodeType value);
void TreeInit(TreeNode** pRoot);
void TreePreOrder(TreeNode* root);
void TreeInOrder(TreeNode* root);
void TreePostOrder(TreeNode* root);
TreeNode* CreatTreeNode(TreeNodeType value);
test.c
#include<stdlib.h>
#include"bin_tree.h"
#include"bin_tree.h"
void TestInit(){
TreeNode* root;
TreeInit(&root);
printf("%c", root);
}
TreeNode* root;
TreeInit(&root);
printf("%c", root);
}
void TestPreOrder(){
TreeNode* a = CreatTreeNode('a');
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b;
a->rchild = c;
b->lchild = d;
b->rchild = e;
e->lchild = g;
c->rchild = f;
TreePreOrder(a);
printf("\n");
return 0;
}
void TestInOrder(){
TreeNode* a = CreatTreeNode('a');
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b;
a->rchild = c;
b->lchild = d;
b->rchild = e;
e->lchild = g;
c->rchild = f;
TreeInOrder(a);
printf("\n");
return 0;
}
void TestPostOrder(){
TreeNode* a = CreatTreeNode('a');
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b; a->rchild = c;
b->lchild = d; b->rchild = e;
e->lchild = g; c->rchild = f;
TreePostOrder(a);
printf("\n");
return 0;
}
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b;
a->rchild = c;
b->lchild = d;
b->rchild = e;
e->lchild = g;
c->rchild = f;
TreePreOrder(a);
printf("\n");
return 0;
}
void TestInOrder(){
TreeNode* a = CreatTreeNode('a');
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b;
a->rchild = c;
b->lchild = d;
b->rchild = e;
e->lchild = g;
c->rchild = f;
TreeInOrder(a);
printf("\n");
return 0;
}
void TestPostOrder(){
TreeNode* a = CreatTreeNode('a');
TreeNode* b = CreatTreeNode('b');
TreeNode* c = CreatTreeNode('c');
TreeNode* d = CreatTreeNode('d');
TreeNode* e = CreatTreeNode('e');
TreeNode* f = CreatTreeNode('f');
TreeNode* g = CreatTreeNode('g');
a->lchild = b; a->rchild = c;
b->lchild = d; b->rchild = e;
e->lchild = g; c->rchild = f;
TreePostOrder(a);
printf("\n");
return 0;
}
int main()
{
TestInit();
TestPreOrder();
TestInOrder();
TestPostOrder();
{
TestInit();
TestPreOrder();
TestInOrder();
TestPostOrder();
return 0;
}
}
在这个二叉树中我们可以去实现他的前序中序以及后序遍历。