以这颗树为例:#表示空节点前序遍历(根->左->右)为: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 = ch; CreateBiTree(&(*T)->lchild); CreateBiTree(&(*T)->rchild); } } void main(){ //前序创建树,中序输出树 BiTree T;//根节点 CreateBiTree(&T); ForEachTree(T); }
时间: 2024-10-12 03:50:46