Swust OJ978: 输出利用先序遍历创建的二叉树的中序(后序)遍历序列

题目简述

利用 先序递归遍历算法创建二叉树输出该二叉树的中序遍历序列

样例输入复制

AB##C##
ABCD###EF##G###
A##B##

样例输出复制

BAC
DCBFEGA
A
要点:二叉树的中序遍历输出算法
 
     
     
void InOrder(Tree *&tree)
{
    if(tree!=NULL)
    {
        InOrder(tree->lchild);//不为空则指针后移 
        cout<<tree->data;//访问根结点 
        InOrder(tree->rchild);
    }
}

要点:二叉树的后序遍历输出算法

void PostOrder(Tree *tree)
{
    if(tree!=NULL)
    {
        PostOrder(tree->lchild);
        PostOrder(tree->rchild);
        cout<<tree->data;
    }
}

完整代码:

 以中序为例:

#include<iostream>
#include<malloc.h>
using namespace std;
typedef struct node
{
    char data;
    struct node *lchild;
    struct node *rchild;
 }Tree;
 
 void CreateTree(Tree *&tree)
 {
     char ch;
     cin>>ch;
     if(ch=='#')
         tree=NULL;
     else
     {
         tree=(Tree*)malloc(sizeof(Tree));
         tree->data=ch;
         CreateTree(tree->lchild);
         CreateTree(tree->rchild);
     }
 }
 
 void InOrder(Tree *tree)
 {
     if(tree!=NULL)
     {
         InOrder(tree->lchild);
         cout<<tree->data;
         InOrder(tree->rchild);
     }
 }
 int main()
 
 {
     Tree *tree;
     CreateTree(tree);
     InOrder(tree);
     return 0;
 }
 
 
      
     
 

猜你喜欢

转载自www.cnblogs.com/army613bts/p/12685124.html