0.0序言
hello~,大家好呀。今天主要学习的是对于二叉树的实现~
着重于前序查找、中序查找、后序查找等的C语言实现。
话不多说,让我们进入正题吧!!
1.1简单创建一个二叉树
在二叉树这里,创建二叉树并不是重点,就简单创建一下...
BTNode.h
#pragma once
#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
typedef int BTDataType;
typedef struct BinaryTreeNode
{
struct BinaryTreeNode* left;
struct BinaryTreeNode* right;
BTDataType data;
}BTNode;
BTNode* BuyBTNode(BTDataType x); //创建一个二叉树结点
BTNode.c
#include "BTNode.h"
//创建一个二叉树结点
BTNode* BuyBTNode(BTDataType x)
{
BTNode* newnode = NULL;
newnode = (BTNode*)malloc(sizeof(BTNode));
if (newnode == NULL)
{
printf("malloc failed\n");
exit(-1);
}
//对二叉树结点进行初始化
newnode->data = x;
newnode->left = NULL;
newnode->right = NULL;
return newnode;
}
test.c
#include "BTNode.h"
BTNode* CreatBinaryTree()
{
BTNode* node1 = BuyBTNode(1);
BTNode* node2 = BuyBTNode(2);
BTNode* node3 = BuyBTNode(3);
BTNode* node4 = BuyBTNode(4);
BTNode* node5 = BuyBTNode(5);
BTNode* node6 = BuyBTNode(6);
node1->left = node2;
node1->right = node4;
node2->left = node3;
node4->left = node5;
node4->right = node6;
return node1;
}
int main()
{
//建一个二叉树
BTNode* tree = CreatBinaryTree();
return 0;
}
1.2 二叉树前序遍历
二叉树的前序遍历:根、左子树、右子树
C语言代码实现
int main()
{
//建一个二叉树
BTNode* tree = CreatBinaryTree();
//前序遍历
PrevOrder(tree);
printf("\n");
return 0;
}
//前序遍历
void PrevOrder(BTNode* root)
{
if (root == NULL)
{
printf("NULL ");
return;
}
printf("%d ", root->data);
PrevOrder(root->left);
PrevOrder(root->right);
}
1.3 二叉树中序遍历
二叉树的前序遍历:左子树、根、右子树
C语言代码实现
int main()
{
//建一个二叉树
BTNode* tree = CreatBinaryTree();
//中序遍历
InOrder(tree);
printf("\n");
return 0;
}
//中序遍历
void InOrder(BTNode* root)
{
if (root == NULL)
{
printf("NULL ");
return;
}
InOrder(root->left);
printf("%d ", root->data);
InOrder(root->right);
}
1.4 二叉树后序遍历
二叉树的前序遍历:左子树、右子树、根
C语言代码实现
int main()
{
//建一个二叉树
BTNode* tree = CreatBinaryTree();
//后序遍历
AfterOrder(tree);
printf("\n");
return 0;
}
//后序遍历
void AfterOrder(BTNode* root)
{
if (root == NULL)
{
printf("NULL ");
return;
}
AfterOrder(root->left);
AfterOrder(root->right);
printf("%d ", root->data);
}