test.c
int main()
{
TestBinTree();
return 0;
}
BinaryTree.c
#define _CRT_SECURE_NO_WARNINGS 1
#include "BinaryTree.h"
BTNode* BUyBinTreeNode(BTNDataType data)
{
BTNode* newNode = (BTNode*)malloc(sizeof(BTNode));
if (NULL == newNode)
{
assert(0);
return NULL;
}
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
BTNode* CreateBinTree()
{
BTNode* root = NULL;
BTNode* n1 = BUyBinTreeNode(1);
BTNode* n2 = BUyBinTreeNode(2);
BTNode* n3 = BUyBinTreeNode(3);
BTNode* n4 = BUyBinTreeNode(4);
BTNode* n5 = BUyBinTreeNode(5);
BTNode* n6 = BUyBinTreeNode(6);
root = n1;
root->left = n2;
n2->left = n3;
root->right = n4;
n4->left = n5;
n4->right = n6;
return root;
}
//假设:遍历操作就是将节点中的值域打印出来
//根节点--》根节点的左子树--》根节点的右子树
void preOrder(BTNode* root)
{
if (root)
{
printf("%d ", root->data);
preOrder(root->left);
preOrder(root->right);
}
}
void InOrder(BTNode* root)
{
if (root)
{
InOrder(root->left);
printf("%d ", root->data);
InOrder(root->right);
}
}
void PostOrder(BTNode* root)
{
if (root)
{
PostOrder(root->left);
PostOrder(root->right);
printf("%d ", root->data);
}
}
BinaryTree.h
#pragma once
#include<malloc.h>
#include<assert.h>
#include<stdio.h>
//binary tree node data type二叉树节点数据类型
typedef int BTNDataType;
typedef struct BTNode
{
struct BTNode* left;
struct BTNode* right;
BTNDataType data;//节点中的值域
}BTNode;
BTNode* CreateBinTree();//创建
void preOrder(BTNode* root);//前序遍历root这个数
void InOrder(BTNode* root);//中序遍历
void PostOrder(BTNode* root);//后序遍历
//
void TestBinTree()
{
BTNode* root = CreateBinTree();
printf("前序遍历结果: ");
preOrder(root);
printf("\n");
printf("中序遍历结果: ");
InOrder(root);
printf("\n");
printf("后序遍历结果: ");
PostOrder(root);
printf("\n");
}
图例: