【数据结构】二叉树的递归遍历
发布时间:2020-12-15 06:30:28 所属栏目:安全 来源:网络整理
导读:#include stdio.h#include stdlib.htypedef char ElemType;typedef struct BiTree{ElemType Elem;BiTree * LChild;BiTree * RChild;}BiTree,*PBiTree;/*建立二叉树*/PBiTree CreateBiTree();/*先序遍历二叉树*/void ProOrderTravel(PBiTree Tree);/*中序遍历
#include <stdio.h> #include <stdlib.h> typedef char ElemType; typedef struct BiTree { ElemType Elem; BiTree * LChild; BiTree * RChild; }BiTree,*PBiTree; /*建立二叉树*/ PBiTree CreateBiTree(); /*先序遍历二叉树*/ void ProOrderTravel(PBiTree Tree); /*中序遍历二叉树*/ void InOrderTravel(PBiTree Tree); /*后序遍历二叉树*/ void PostOrderTravel(PBiTree Tree); void main() { PBiTree BTree = CreateBiTree(); printf("先序排列为:n"); ProOrderTravel(BTree); printf("n中序排列为:n"); InOrderTravel(BTree); printf("n后序排列为:n"); PostOrderTravel(BTree); printf("n"); } PBiTree CreateBiTree() { PBiTree T; ElemType tmp; scanf("%c",&tmp); if (tmp == '#') { T = NULL; return NULL; } else { T = (PBiTree)malloc(sizeof(BiTree)); T->Elem = tmp; T->LChild = CreateBiTree(); T->RChild = CreateBiTree(); } return T; } void ProOrderTravel(PBiTree Tree) { if (Tree != NULL) { printf("%ct",Tree->Elem); ProOrderTravel(Tree->LChild); ProOrderTravel(Tree->RChild); } } void InOrderTravel(PBiTree Tree) { if (Tree != NULL) { /* 如果有左子树,一直向下寻找 */ if (Tree->LChild != NULL) { InOrderTravel(Tree->LChild); } printf("%ct",Tree->Elem); InOrderTravel(Tree->RChild); } } void PostOrderTravel(PBiTree Tree) { if (Tree != NULL) { /* 如果有左子树,一直向下寻找 */ if (Tree->LChild != NULL) { PostOrderTravel(Tree->LChild); } PostOrderTravel(Tree->RChild); printf("%ct",Tree->Elem); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |