数据结构:树形结构完整代码,各种遍历方法,直接能跑

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#include

#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 A V ALIBALE 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");

PostOrderTraverse(bitree, printElem);

printf("\n");

printf("LevelOrderTraverse:\n");

LevelOrderTraverse(bitree, printElem);

printf("\n");

printf("Depth is %d.\n", BiTreeDepth(bitree));

printf("Count leaf is %d.\n", CountLeaf(bitree));

DestroyBiTree(&bitree);

DestroyBiTree(&bitree2);

}

相关文档
最新文档