求中序遍历序列的第一个结点值(二叉树)

来源:互联网 发布:办公室有老鼠 知乎 编辑:程序博客网 时间:2024/06/08 00:10

1.题目:


 Problem Description

设有一棵二叉树,其节点值为字符型并假设各值互不相等,采用二叉链表存储表示。现输入其扩展二叉树的前序遍历序列,要求建立该二叉树,并输出其中序遍历序列的第一个结点值。


 Input

第一行为一个整数n,表示以下有n组数据,每组数据占一行,为扩展二叉树的前序遍历序列。


 Output

输出该二叉树中序遍历序列的第一个结点值,若该点不存在则输出"null"。


 Sample Input

2AB#D##C##ABD##E##C#F##


 Sample Output

BD


2.参考代码:


#include <iostream>using namespace std;char ans[111];int t;struct BiNode{char data;BiNode* lchild,* rchild;};class BiTree{private:BiNode* root;BiNode* Creat();void Release(BiNode* root);public:BiTree();~BiTree();BiNode* GetRoot(){return root;}void InOrder(BiNode* root);};BiNode* BiTree::Creat(){BiNode* root;char ch;cin>>ch;if(ch=='#')root=NULL;else{root=new BiNode;root->data=ch;root->lchild=Creat();root->rchild=Creat();}return root;}void BiTree::Release(BiNode* root){if(root){Release(root->lchild);Release(root->rchild);delete root;}}BiTree::BiTree(){root=Creat();}BiTree::~BiTree(){Release(root);}void BiTree::InOrder(BiNode* root){if(root==NULL)return ;else{InOrder(root->lchild);ans[t++]=root->data;InOrder(root->rchild);}}int main(){int n;cin>>n;while(n--){BiTree bt;BiNode* root=bt.GetRoot();if(root==NULL){cout<<"null\n";continue;}bt.InOrder(root);cout<<ans[0]<<endl;t=0; }return 0;}





原创粉丝点击