一 遍历结果:
二 代码:
#include "windows.h"
#include "stdio.h"
typedef struct TREENODE
{
char data;
struct TREENODE * LeftChild;
struct TREENODE * RightChild;
}TREENODE;
//二叉树的前序遍历
void BeforeNode(TREENODE *TreeNode)
{
if (TreeNode == NULL)
{
return;
}
printf("%c", TreeNode->data);//打印根节点
BeforeNode(TreeNode->LeftChild);
BeforeNode(TreeNode->RightChild);
}
//二叉树的中序遍历
void MidNode(TREENODE *TreeNode)
{
if (TreeNode == NULL)
{
return;
}
MidNode(TreeNode->LeftChild);
printf("%c",TreeNode->data);
MidNode(TreeNode->RightChild);
}
// 二叉树的后序遍历
void AfterNode(TREENODE *TreeNode)
{
if (TreeNode == NULL)
{
return;
}
AfterNode(TreeNode->LeftChild);
AfterNode(TreeNode->RightChild);
printf("%c", TreeNode->data);
}
void main()
{
TREENODE * TreeNode = NULL;
//根节点
TreeNode = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->data = 'A';
//A节点的左子树
TreeNode->LeftChild = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->LeftChild->data = 'B';
//B节点的左子树
TreeNode->LeftChild->LeftChild = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->LeftChild->LeftChild->data = 'D';
TreeNode->LeftChild->LeftChild->LeftChild = NULL;
TreeNode->LeftChild->LeftChild->RightChild = NULL;
//B节点的右子树
TreeNode->LeftChild->RightChild = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->LeftChild->RightChild->data = 'E';
TreeNode->LeftChild->RightChild->LeftChild = NULL;
TreeNode->LeftChild->RightChild->RightChild = NULL;
//A节点的右子树
TreeNode->RightChild = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->RightChild->data = 'C';
TreeNode->RightChild->LeftChild = NULL;
//C节点的右子树
TreeNode->RightChild->RightChild = (TREENODE *)malloc(sizeof(TREENODE));
TreeNode->RightChild->RightChild->data = 'F';
TreeNode->RightChild->RightChild->LeftChild = NULL;
TreeNode->RightChild->RightChild->RightChild = NULL;
//二叉树的前序遍历: 先遍历根节点,再遍历左子树,最后遍历右子树 . ABDECF
printf("\n二叉树的前序遍历 : ");
BeforeNode(TreeNode);
//二叉树的中序遍历:先遍历左子树,再遍历根节点,最后遍历右子树 DBEACF
printf("\n二叉树的中序遍历 : ");
MidNode(TreeNode);
//二叉树的后序遍历:先遍历左子树,再遍历右子树,最后遍历根节点 DEBFCA
printf("\n二叉树的后序遍历 : ");
AfterNode(TreeNode);
getche();
}