- 8
- 0
- 约8.98千字
- 约 11页
- 2018-05-26 发布于河南
- 举报
数据结构:树形结构完整代码,各种遍历方法,直接能跑
#include stdio.h
#include stdlib.h
#define TElemType int
typedef struct BiTNode {
TElemType data;
struct BiTNode *lchild, *rchild;
} BiTNode, *BiTree;
typedef BiTree DataType;
typedef struct queuenode{
DataType data;
struct queuenode *next;
} QueueNode;
//LINKQUEUE
//HEAD POINTER, AND REAR POINTER ARE AVALIBALE
typedef struct {
QueueNode *front;
QueueNode *rear;
} LinkQueue;
int InitQueue(LinkQueue *Q);
int DestroyQueue(LinkQueue *Q);
int QueueEmpty(LinkQueue Q);
int EnQueue(LinkQueue *Q, DataType e);
DataType DeQueue(LinkQueue *Q);
int CreateBiTree(BiTree *T);
int PreOrderTraverse(BiTree T, int (*visit)(TElemType e));
int PreOrderTraverse2(BiTree T, int (*visit)(TElemType e));
int InOrderTraverse(BiTree T, int (*visit)(TElemType e));
int InOrderTraverse2(BiTree T, int (*visit)(TElemType e));
int PostOrderTraverse(BiTree T, int (*visit)(TElemType e));
int PostOrderTraverse2(BiTree T, int (*visit)(TElemType e));
int LevelOrderTraverse(BiTree T, int (*visit)(TElemType e));
int printElem(TElemType e);
int InitBiTree(BiTree *T);
int DestroyBiTree(BiTree *T);
int ClearBiTree(BiTree *T);
int BiTreeEmpty(BiTree T);
int BiTreeDepth(BiTree T);
BiTNode *Parent(BiTree T, BiTNode *e);
BiTNode *LeftChild(BiTree T, BiTNode *e);
BiTNode *RightChild(BiTree T, BiTNode *e);
BiTNode *LeftSibling(BiTree T, BiTNode *e);
BiTNode *RightSibling(BiTree T, BiTNode *e);
int InsertChild(BiTree T, BiTNode *p, int LR, BiTree C);
int DeleteChild(BiTree T, BiTNode *p, int LR);
int CountLeaf(BiTree T);
int CreateBiTreeByPreInOrder(BiTree *T, int preorder[], int *idx,
int inorder[], int low, int high,
int length);
int main()
{
BiTree bitree,bitree2;
InitBiTree(bitree);
InitBiTree(bitree2);
printf(input tree 1:\n);
CreateBiTree2(bitree);
printf(PreOrderTraverse:\n);
PreOrderTraverse(bitree, printElem);
printf(\n);
printf(InOrderTraverse:\n);
InOrderTraverse(bitree, printElem);
printf(\n);
printf(PostOrderTraverse:\n);
原创力文档

文档评论(0)