思路:主要通过迭代完成 树的先序、中序、后序 遍历;
#include <stdio.h>
#include <stdlib.h>
typedef struct BINARYNODE
{
char ch;
struct BINARYNODE* lChild;
struct BINARYNODE* rChild;
}BinaryNode;
void recursion(BinaryNode* root)
{
if (root == NULL)
{
return;
}
BinaryNode* recursionNode = root;
//printf("%c", recursionNode->ch);//先序
if (recursionNode->lChild != NULL)
recursion(recursionNode->lChild);
printf("%c", recursionNode->ch); //中序
if (recursionNode->rChild != NULL)
recursion(recursionNode->rChild);
//printf("%c", recursionNode->ch); //后序
}
int main()
{
//创建结点;
BinaryNode nodeA = { 'A', NULL, NULL };
BinaryNode nodeB = { 'B', NULL, NULL };
BinaryNode nodeC = { 'C', NULL, NULL };
BinaryNode nodeD = { 'D', NULL, NULL };
BinaryNode nodeE = { 'E', NULL, NULL };
BinaryNode nodeF = { 'F', NULL, NULL };
BinaryNode nodeG = { 'G', NULL, NULL };
BinaryNode nodeH = { 'H', NULL, NULL };
//创建树;
nodeA.lChild = &nodeB;
nodeA.rChild = &nodeF;
nodeB.lChild = NULL;
nodeB.rChild = &nodeC;
nodeC.lChild = &nodeD;
nodeC.rChild = &nodeE;
nodeF.lChild = NULL;
nodeF.rChild = &nodeG;
nodeG.lChild = &nodeH;
nodeG.rChild = NULL;
recursion(&nodeA);
system("pause");
return 0;
}