c语言实现二叉树递归遍历,首先用结构体给出结点类型,然后创建具体的结点变量,接着对结点进行连接。递归遍历的函数的内部主要是根节点的打印和左右子树的递归,前中后序的实现通过调整递归的顺序即可完成。
ps:递归结束条件很重要,不要忘记。
对于下图所示的二叉树进行遍历:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
//二叉树结点
typedef struct BINARYNODE
{
char ch;
struct BINARYNODE* lchild;
struct BINARYNODE* rchild;
}BinaryNode;
//递归遍历
void Recursion(BinaryNode* root)
{
if (root == NULL)//递归结束条件很重要
{
return;
}
//先访问根结点
printf("%c ", root->ch);
//再遍历左子树
Recursion(root->lchild);
//遍历右子树
Recursion(root->rchild);
}
void CreatBinaryNode()
{
//创建结点
BinaryNode node1 = { 'A',NULL,NULL };
BinaryNode node2 = { 'B',NULL,NULL };
BinaryNode node3 = { 'C',NULL,NULL };
BinaryNode node4 = { 'D',NULL,NULL };
BinaryNode node5 = { 'E',NULL,NULL };
BinaryNode node6 = { 'F',NULL,NULL };
BinaryNode node7 = { 'G',NULL,NULL };
BinaryNode node8 = { 'H',NULL,NULL };
//建立结点关系
node1.lchild = &node2;
node1.rchild = &node6;
node2.rchild = &node3;
node3.lchild = &node4;
node3.rchild = &node5;
node6.rchild = &node7;
node7.lchild = &node8;
Recursion(&node1);
}
int main()
{
CreatBinaryNode();
system("pause");
return 0;
}
前序遍历:
中序遍历:
后序遍历: