二叉树的遍历(递归算法)

发布时间 2023-04-24 09:18:01作者: 正方形的被子
//二叉树的遍历(递归算法)

#include <stdio.h>
#include <malloc.h>

typedef struct BiTNode
{
    int data;
    struct BiTNode *lchild,*rchild;//存储二叉树的左孩子和右孩子
}BiTNode,*BiTree;

void InitTree(BiTree &root)
{
    root = (BiTNode *)malloc(sizeof(BiTNode));
    root->data = -1;
    root->lchild = NULL;
    root->rchild = NULL;
}

void visit(BiTNode *T)//访问函数
{
    printf("%d",T->data);
}

void PreOrder(BiTree T)//先序遍历(根左右)
{
    if(T!=NULL)
    {
        visit(T);//进行递归来访问节点
        PreOrder(T->lchild);
        PreOrder(T->rchild);
    }
}

void InOrder(BiTree T)//中序遍历(左根右)
{
    if(T!=NULL)
    {
        InOrder(T->lchild);
        visit(T);
        InOrder(T->rchild);
    }
}

void PostOrder(BiTree T)//后序遍历(左右根)
{
    if(T!=NULL)
    {
        PostOrder(T->lchild);
        PostOrder(T->rchild);
        visit(T);
    }
}

int main()
{
    BiTree Tree;
    InitTree(Tree);
    printf("%d",Tree->data);
    return 0;
}