首页 > 代码库 > 二叉树的创建和遍历

二叉树的创建和遍历

技术分享

以这颗树为例:#表示空节点
前序遍历(根->左->右)为:ABD##E##C#F##
中序遍历(左->根->右)为:#D#B#E#A#C#F#
后序遍历(左->右->根)为:##D##EB###FCA


 

#include <stdio.h>#include <stdlib.h>typedef char TElemType;typedef struct BiTNode{    TElemType data;    struct BiTNode *lchild,*rchild; }BiTNode,*BiTree;void ForEachTree(BiTree T){    if(T == NULL){        return;    }//    printf(" %c ",T->data);前序遍历    ForEachTree(T->lchild);    printf(" %c ",T->data);//中序遍历    ForEachTree(T->rchild);//    printf(" %c ",T->data);后序遍历}void CreateBiTree(BiTree *T){    TElemType ch;    scanf("%c",&ch);    if(# == ch){        *T = NULL;    }else{        *T = (BiTree)malloc(sizeof(BiTNode));            (*T)->data =http://www.mamicode.com/ ch;        CreateBiTree(&(*T)->lchild);            CreateBiTree(&(*T)->rchild);        }}void main(){    //前序创建树,中序输出树    BiTree T;//根节点    CreateBiTree(&T);    ForEachTree(T);}

技术分享

 

二叉树的创建和遍历