description
1、問題描述
給定一棵按「先根」遍歷儲存表示的二叉樹,請中根遍歷這棵二叉樹。
2、二叉樹建立說明
⑴、按「先根」遍歷儲存表示的二叉樹中,如果在遍歷過程中,發現子樹為空,輸出0
⑵、例如:a有b子樹,沒有右子樹,其「先根」遍歷為a b 0 0 0
⑶、例如:a為根,b為a的右孩子;c為b的左孩子,d為b的右孩子,其「先根」遍歷為a 0 b c 0 0 d 0 0
input
第一行:先根遍歷的二叉樹結點數目(包括空結點)
第二行:n個「先根」遍歷二叉樹字串行(用空格隔開)(字元0表示空結點)
output
第一行:二叉樹的中根遍歷序列(結點用空格隔開)(最後乙個結點之後也留有空格)
sample input
9a 0 b c 0 0 d 0 0
sample output
a c b d
#include
using namespace std;
#include
const int max = 30;
class bitreenode
class bitree;
void createtree(char treearray,int n);
void inorder();
void bitree::createtree(chartreearray,int n)
pos = 0; int i;
for(i = 0;i < n;i++)
strtree[i] = treearray[i];
root = createbitree();
bitreenode *bitree::createbitree()
bitreenode *t;
char ch;
ch = strtree[pos++];
if(ch == '0')
t = null;
else{
t = new bitreenode();
t->data = ch;
t->lchild = createbitree();
t->rchild = createbitree();
return t;
void bitree::inorder()
inorder(root);
void bitree::inorder(bitreenode *t)
if(t)
inorder(t->lchild);
coutinorder(t->rchild);
int main()
int i,n;
char str[max];
bitree t;
//freopen("cin1.txt", "r", stdin);
cin>>n;
for(i = 0;i < n; i++)
cin>>str[i];
t.createtree(str, n);
t.inorder();
cout 本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數 n 是樹中結點的個數。隨後兩行,每行給出 n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間有1個空格... 不管是左右子樹還是整棵樹,先序遍歷的第乙個元素就是根節點,然後從中序遍歷中找到根節點在中序遍歷的位置,並且記錄左子樹元素的個數。先輸出左子樹,再輸出右子樹。最後輸出根節點 includeusing namespace std string pri,mid void print int l1,int ... 題目鏈結 本題要求根據給定的一棵二叉樹的後序遍歷和中序遍歷結果,輸出該樹的先序遍歷結果。第一行給出正整數 n 是樹中結點的個數。隨後兩行,每行給出 n個整數,分別對應後序遍歷和中序遍歷結果,數字間以空格分隔。題目保證輸入正確對應一棵二叉樹。在一行中輸出preorder 以及該樹的先序遍歷結果。數字間...(後序 中序建樹)根據後序和中序遍歷輸出先序遍歷
根據先序中序輸出後序(非建樹版)
7 1 根據後序和中序遍歷輸出先序遍歷(25 分)