快捷搜索: 王者荣耀 脱发

二叉树:前序遍历/中序遍历/后序遍历—代码实现

二叉树:前序遍历/中序遍历/后序遍历—代码实现


说明


代码实现

初始化二叉树

函数: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;
}
经验分享 程序员 微信小程序 职场和发展