📄 bitree.cpp
字号:
// BiTree.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "malloc.h"
#include "stdio.h"
#define ERROR 0
#define OVERFLOW -2
#define OK 1
typedef char TElemType;
typedef int Status;
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
Status pnt(TElemType e)
{
printf(" %c ",e);
return OK;
}
//PreOrderTraverse
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;
}
//InOrderTraverse
Status InOrderTraverse(BiTree T,Status(* Visit)(TElemType e))
{
if(T)
{
if(InOrderTraverse(T->lchild,Visit))
if(Visit(T->data))
if(InOrderTraverse(T->rchild,Visit))
return OK;
return ERROR;
}
else
return OK;
}
//PostOrderTraverse
Status PostOrderTraverse(BiTree T,Status(* Visit)(TElemType e))
{
if(T)
{
if(PostOrderTraverse(T->lchild,Visit))
if(PostOrderTraverse(T->rchild,Visit))
if(Visit(T->data))
return OK;
return ERROR;
}
else
return OK;
}
//CreateBiTree
Status CreateBiTree(BiTree &T)
{
char ch;
scanf("%c",&ch);
if(ch=='#')
T=NULL;
else
{
if(!(T=(BiTNode *)malloc(sizeof (BiTNode))))
return OVERFLOW;
T->data=ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
return OK;
}
int main(int argc, char* argv[])
{
BiTree T;
CreateBiTree(T);
printf("\n");
PreOrderTraverse(T,pnt);
printf("\n");
InOrderTraverse(T,pnt);
printf("\n");
PostOrderTraverse(T,pnt);
printf("\n");
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -