本文章中的内容参考于王道数据结构考研书,如果你对该部分的内容的记忆有所模糊,可以阅读我的文章再加深印象
1.定义二叉树结构体
2.初始化二叉树的根结点
3.实现二叉树链式存储的插入操作
4.实现二叉树的先序遍历、中序遍历、后序遍历
typedef struct BiTNode {
int data; //数据域
BiTNode* lchild;//左指针
BiTNode* rchild;//右指针
}BiTNode,*BiTree;
void InitTree(BiTree &root)
{
//创建一个根结点
root = (BiTree)malloc(sizeof(BiTNode));
//初始化根结点数据
root->data = { 1 };
root->lchild = NULL;
root->rchild = NULL;
}
void InsertNode(BiTree& root)
{
BiTNode* p = (BiTNode*)malloc(sizeof(BiTNode));
//将新创建的结点初始化
p->data = { 2 };
p->lchild = NULL;
p->rchild = NULL;
//将新结点变为root的左孩子
root->lchild = p;
}
void PreOrder(BiTree root)
{
if(root!=NULL)
{
visit(root);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(BiTree& root)
{
if (root != NULL)
{
InOrder(root->lchild);
visit(root);
InOrder(root->rchild);
}
}
void PostOrder(BiTree& root)
{
if (root != NULL)
{
PostOrder(root->lchild);
PostOrder(root->rchild);
visit(root);
}
}
void visit(BiTNode* node)
{
printf("%d", node->data);
}
#define _CRT_SECURE_NO_WARNINGS
#include
#include
typedef struct BiTNode {
int data;
BiTNode* lchild;
BiTNode* rchild;
}BiTNode,*BiTree;
void InitTree(BiTree &root)
{
//创建一个根结点
root = (BiTree)malloc(sizeof(BiTNode));
//初始化根结点数据
root->data = { 1 };
root->lchild = NULL;
root->rchild = NULL;
}
void InsertNode(BiTree& root)
{
BiTNode* p = (BiTNode*)malloc(sizeof(BiTNode));
//将新创建的结点初始化
p->data = { 2 };
p->lchild = NULL;
p->rchild = NULL;
//将新结点变为root的左孩子
root->lchild = p;
}
void visit(BiTNode* node)
{
printf("%d", node->data);
}
void PreOrder(BiTree root)
{
if(root!=NULL)
{
visit(root);
PreOrder(root->lchild);
PreOrder(root->rchild);
}
}
void InOrder(BiTree& root)
{
if (root != NULL)
{
InOrder(root->lchild);
visit(root);
InOrder(root->rchild);
}
}
void PostOrder(BiTree& root)
{
if (root != NULL)
{
PostOrder(root->lchild);
PostOrder(root->rchild);
visit(root);
}
}
int main()
{
//定义一个空树
BiTree root=NULL;
//初始化根结点
InitTree(root);
//插入新结点
InsertNode(root);
//先序遍历
PreOrder(root);
//中序遍历
InOrder(root);
//后序遍历
PostOrder(root);
return 0;
}
如果本篇文章对你有所帮助,那么可以给我点个关注,我们一起进步!