,对于如下图所示二叉树,进行先序/中序/后续 遍历,话不多说上代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct BinaryNode
{
//数据域
char ch;
//指针域
struct BinaryNode* lChild;
struct BinaryNode* rChild;
};
//遍历
void recursion(struct BinaryNode* root)
{
if (root == NULL)
{
return;
}
//先序遍历
printf("%c ", root->ch);
recursion(root->lChild);
recursion(root->rChild);
//中序遍历
/*
recursion(root->lChild);
printf("%c\n", root->ch);
recursion(root->rChild);*/
//后序遍历
/*
recursion(root->lChild);
recursion(root->rChild);
printf("%c\n", root->ch);
*/
}
void test01()
{
struct BinaryNode nodeA = { 'A',NULL,NULL };
struct BinaryNode nodeB = { 'B',NULL,NULL };
struct BinaryNode nodeC = { 'C',NULL,NULL };
struct BinaryNode nodeD = { 'D',NULL,NULL };
struct BinaryNode nodeE = { 'E',NULL,NULL };
struct BinaryNode nodeF = { 'F',NULL,NULL };
struct BinaryNode nodeG = { 'G',NULL,NULL };
struct BinaryNode nodeH = { 'H',NULL,NULL };
nodeA.lChild = &nodeB;
nodeB.rChild = &nodeC;
nodeC.lChild = &nodeD;
nodeC.rChild = &nodeE;
nodeA.rChild = &nodeF;
nodeF.rChild = &nodeG;
nodeG.lChild = &nodeH;
//调用遍历函数
recursion(&nodeA);
}
int main()
{
test01();
system("pause");
return NULL;
}