#include <stdio.h>
#include<stdlib.h>
#define Ok 1
#define Error 0
typedef int Status;
typedef int TElemType ;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree; //采用二叉链表存储结构,
BiTNode *CreatBiTree(BiTree &t) //创建一个二叉树
{
char ch;
ch=getchar();
getchar();
if(ch==' ') t=NULL;
else{
t=(BiTNode*)malloc(sizeof(BiTNode));
if(!t) exit(1);
t->data=ch;
printf("请输入%c的左节点",t->data);
t->lchild=CreatBiTree(t->lchild); //通过递归调用创建t的左孩子节点
printf("请输入%c的右节点",t->data);
t->rchild=CreatBiTree(t->rchild); //递归完成各个节点的右孩子节点的创建
}
return t;
}
Status printelement(TElemType e) //先序遍历二叉树的函数中的(*visit)指针函数 其实就是个输出函数
{
printf("%c",e);
return Ok;
}
Status PreOrderTraverse(BiTree t,Status (*visit)(TElemType e)) //用递归的方法先序遍历二叉树
{
if(t)
{
if(visit(t->data))
if(PreOrderTraverse(t->lchild,visit)) //一直遍历到左根节点才再到下一条语句
if(PreOrderTraverse(t->rchild,visit) ) return Ok;
return Error;
}
else return Ok;
}
void main()
{
BiTree tree;
printf("请输入根节点");
CreatBiTree(tree);
PreOrderTraverse(tree,printelement);
getchar();
getchar();
}
递归算法先序遍历二叉树
最新推荐文章于 2023-02-09 15:27:20 发布