//二叉树的遍历(递归算法)
#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;
}
标签:遍历,递归,BiTree,void,BiTNode,二叉树,rchild,NULL From: https://www.cnblogs.com/ryuichi-ssk/p/17348416.html