问题描述:输入一棵二叉树,使用二叉链表结构存储二叉树,并用递归方法输出先序、中序、后序三种遍历结果。
#include<iostream> #include<cstdlib> using namespace std; typedef struct BiTNode { char data; BiTNode *lchild, *rchild; }BiTNode,*BiTree; void CreateBiTree(BiTree &T) {//以先序输入数据 char ch; ch=getchar(); if(ch==' ') T=NULL; else { if(!(T=(BiTNode *)malloc(sizeof(BiTNode)))) exit(0); T->data = ch; CreateBiTree(T->lchild); CreateBiTree(T->rchild); } } void PreOrderTraverse(BiTree &T) {//先序遍历 if(T==NULL) return; if(T->data!=' ') cout<<T->data; PreOrderTraverse(T->lchild); PreOrderTraverse(T->rchild); } void InOrderTraverse(BiTree &T) {//中序遍历 if(T==NULL) return; InOrderTraverse(T->lchild); if(T->data!=' ') cout<<T->data; InOrderTraverse(T->rchild); } void PostOrderTraverse(BiTree &T) {//后序遍历 if(T==NULL) return; PostOrderTraverse(T->lchild); PostOrderTraverse(T->rchild); if(T->data!=' ') cout<<T->data; } int main() { BiTree T; cout<<"Enter the numbers(Preorder):"<<endl; CreateBiTree(T); cout<<"The Preorder is:"<<endl; PreOrderTraverse(T); cout<<endl; cout<<"The Inorder is:"<<endl; InOrderTraverse(T); cout<<endl; cout<<"The Posteorder is:"<<endl; PostOrderTraverse(T); cout<<endl; return 0; }