北京市住房城乡建设门户网站,seo推广策略,做电影网站犯法,汉沽网站建设公司二叉树链式存储及遍历 文章目录 二叉树链式存储及遍历前言实现过程代码实现源代码总结 前言 本文章中的内容参考于王道数据结构考研书#xff0c;如果你对该部分的内容的记忆有所模糊#xff0c;可以阅读我的文章再加深印象 实现过程 1.定义二叉树结构体 2.初始化二叉树的根结…二叉树链式存储及遍历 文章目录 二叉树链式存储及遍历前言实现过程代码实现源代码总结 前言 本文章中的内容参考于王道数据结构考研书如果你对该部分的内容的记忆有所模糊可以阅读我的文章再加深印象 实现过程 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);}
}对遍历visit函数的定义这里遍历就直接将其打印即可
void visit(BiTNode* node)
{printf(%d, node-data);
}源代码
#define _CRT_SECURE_NO_WARNINGS
#includestdio.h
#includestdlib.htypedef 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 rootNULL;//初始化根结点InitTree(root);//插入新结点InsertNode(root);//先序遍历PreOrder(root);//中序遍历InOrder(root);//后序遍历PostOrder(root);return 0;
}总结 如果本篇文章对你有所帮助那么可以给我点个关注我们一起进步