数据结构学习之_二叉树的遍历

来源:互联网 发布:怎么查看自己淘宝几心 编辑:程序博客网 时间:2024/05/18 03:22
/*2013年3月25日 22:17:47 xulei二叉树的遍历分为三种:先序遍历(DLR): 先访问根节点, 再访问左节点, 最后访问右节点中序遍历(LDR): 先访问左节点, 再访问根节点, 最后访问右节点后序遍历(LRD): 先访问左节点, 再访问右节点, 最后访问根节点*/#include <stdio.h>#include <malloc.h>struct BiTreeNode{char data;// 数据域, 假设为char struct BiTreeNode * Lchild;// 左节点struct BiTreeNode * Rchild;// 右节点};//先序遍历(DLR): int PreOrder(struct BiTreeNode *p);//中序遍历(LDR):int InOrder(struct BiTreeNode *p);//后序遍历(LRD):int PostOrder(struct BiTreeNode *p);// 静态创建一个二叉树struct BiTreeNode * CreateTree();int main(int argc, char **argv){struct BiTreeNode *tree = CreateTree();PreOrder(tree);printf("\n");InOrder(tree);printf("\n");PostOrder(tree);printf("\n");return 0;}int PreOrder(struct BiTreeNode *p){if (p != NULL){printf("%c ", p->data);// 先对数据域操作PreOrder(p->Lchild);// 再遍历左节点PreOrder(p->Rchild);// 最后遍历右节点}return 0;}//中序遍历(LDR):int InOrder(struct BiTreeNode *p){if (p != NULL){InOrder(p->Lchild);// 先遍历左节点printf("%c ", p->data);// 再对数据域操作InOrder(p->Rchild);// 最后遍历右节点}return 0;}//后序遍历(LRD):int PostOrder(struct BiTreeNode *p){if (p != NULL){PostOrder(p->Lchild);// 先遍历左节点PostOrder(p->Rchild);// 后遍历右节点printf("%c ", p->data);// 最后对数据域操作}return 0;}// 静态创建一个二叉树struct BiTreeNode * CreateTree(){struct BiTreeNode *A = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *B = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *C = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *D = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *E = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *F = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *G = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));struct BiTreeNode *H = (struct BiTreeNode *)malloc(sizeof(struct BiTreeNode));A->data = 'A';//        AA->Rchild = C;//   /  \A->Lchild = B;//  B    CB->data = 'B';//   \     \B->Rchild = D;//D     EB->Lchild = NULL;//   / \     \C->data = 'C';//  F   G     HC->Rchild = E;//C->Lchild = NULL;//D->data = 'D';//D->Rchild = G;//D->Lchild = F;//E->data = 'E';//E->Rchild = H;//E->Lchild = NULL;//F->data = 'F';//F->Rchild = F->Lchild = NULL;//G->data = 'G';G->Lchild = G->Rchild = NULL;H->data = 'H';H->Rchild = H->Lchild = NULL;return A;}

原创粉丝点击