DS二叉树—二叉树构建与遍历(不含框架)
Posted szu-ds-wys
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DS二叉树—二叉树构建与遍历(不含框架)相关的知识,希望对你有一定的参考价值。
题目描述
给定一颗二叉树的逻辑结构如下图,(先序遍历的结果,空树用字符‘#’表示,例如AB#C##D##),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果。
输入
第一行输入一个整数t,表示有t个二叉树
第二行起输入每个二叉树的先序遍历结果,空树用字符‘#’表示,连续输入t行。
输出
输出每个二叉树的先序遍历、中序遍历和后序遍历结果。
样例输入
2 AB#C##D## AB##C##
样例输出
ABCD BCAD CBDA ABC BAC BCA
提示
#include<iostream> #include<string> using namespace std; class BiTreeNode { public: char data; BiTreeNode *Left; BiTreeNode *Right; BiTreeNode() { Left=NULL; Right=NULL; } ~BiTreeNode() { delete Left; delete Right; } }; class BiTree { public: BiTreeNode *Root; int pos; string strTree; BiTree(string str) { pos=0; strTree=str; Root=CreateBiTree(); } BiTreeNode *CreateBiTree() { char ch=strTree[pos]; pos++; if(ch==‘#‘) { return NULL; } else { BiTreeNode *T; T=new BiTreeNode(); T->data=ch; T->Left=CreateBiTree(); T->Right=CreateBiTree(); return T; } } void Pre(BiTreeNode *p) { if(p) { cout<<p->data; Pre(p->Left); Pre(p->Right); } } void In(BiTreeNode *p) { if(p) { In(p->Left); cout<<p->data; In(p->Right); } } void Post(BiTreeNode *p) { if(p) { Post(p->Left); Post(p->Right); cout<<p->data; } } }; int main() { int T; cin>>T; while(T--) { string str; cin>>str; BiTree tree(str); tree.Pre(tree.Root); cout<<endl; tree.In(tree.Root); cout<<endl; tree.Post(tree.Root); cout<<endl; } return 0; }
以上是关于DS二叉树—二叉树构建与遍历(不含框架)的主要内容,如果未能解决你的问题,请参考以下文章
二叉树进阶题------前序遍历和中序遍历构造二叉树;中序遍历和后序遍历构造二叉树