二叉树:前序遍历/中序遍历/后序遍历—代码实现
二叉树:前序遍历/中序遍历/后序遍历—代码实现
说明
代码实现
初始化二叉树
函数:void BinaryTree(void)
前序遍历
函数:void TraverseTree_Preorder(struct BinaryTreeNode* root)
中序遍历
函数:void TraverseTree_Inorder(struct BinaryTreeNode* root)
后序遍历
函数:void TraverseTree_Postorder(struct BinaryTreeNode* root)
/**
* @file BinaryTreeNodeTraverse.c
* @author xgx
* @date 2022-05-30
* @brief BinaryTreeNode Preorder/Inorder/Postorder Traverse
*
* @copyright Copyright (c) 2022
*
*/
#include <stdio.h>
//Binary Tree Node
struct BinaryTreeNode
{
char data; //data
struct BinaryTreeNode *lChild; //left child
struct BinaryTreeNode *rChild; //right child
};
/* Preorder Traversal*/
void TraverseTree_Preorder(struct BinaryTreeNode* root)
{
if(root == NULL)
{
return;
}
printf("%c
",root->data); //root
TraverseTree_Preorder(root->lChild); //left child
TraverseTree_Preorder(root->rChild); //right child
}
/* Inorder Traversal*/
void TraverseTree_Inorder(struct BinaryTreeNode* root)
{
if(root == NULL)
{
return;
}
TraverseTree_Inorder(root->lChild); //left child
printf("%c
",root->data); //root
TraverseTree_Inorder(root->rChild); //right child
}
/* Postorder Traversal*/
void TraverseTree_Postorder(struct BinaryTreeNode* root)
{
if(root == NULL)
{
return;
}
TraverseTree_Postorder(root->lChild); //left child
TraverseTree_Postorder(root->rChild); //right child
printf("%c
",root->data); //root
}
void BinaryTree(void)
{
//create node
struct BinaryTreeNode NodeA = {
A, NULL, NULL};
struct BinaryTreeNode NodeB = {
B, NULL, NULL};
struct BinaryTreeNode NodeC = {
C, NULL, NULL};
struct BinaryTreeNode NodeD = {
D, NULL, NULL};
struct BinaryTreeNode NodeE = {
E, NULL, NULL};
struct BinaryTreeNode NodeF = {
F, NULL, NULL};
struct BinaryTreeNode NodeG = {
G, NULL, NULL};
struct BinaryTreeNode NodeH = {
H, NULL, NULL};
//create node connector
NodeA.lChild = &NodeB;
NodeA.rChild = &NodeF;
NodeB.rChild = &NodeC;
NodeC.lChild = &NodeD;
NodeC.rChild = &NodeE;
NodeF.rChild = &NodeG;
NodeG.lChild = &NodeH;
printf("Preorder Result:
");
TraverseTree_Preorder(&NodeA); //Preorder Traversal
printf("Inorder Result:
");
TraverseTree_Inorder(&NodeA); //Inorder Traversal
printf("Postorder Result:
");
TraverseTree_Postorder(&NodeA); //Postorder Traversal
}
int main(int argc, char **argv)
{
BinaryTree();
return 0;
}
下一篇:
二叉树的遍历_一看就会系列
