玩轉二叉樹

2021-07-29 06:22:48 字數 1246 閱讀 7283

時間限制

400 ms

記憶體限制

65536 kb

**長度限制

8000 b

判題程式

standard

作者 陳越

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。

輸入格式:

輸入第一行給出乙個正整數n(<=30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。

輸出格式:

在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。

輸入樣例:

7

1 2 3 4 5 6 7

4 1 3 2 6 5 7

輸出樣例:
4 6 1 7 5 3 2
解題**:
#include#include#include#includeusing namespace std;

struct node

;int result[35];

//根據先序遍歷和中序遍歷恢復二叉樹

struct node *createtree(int pre,int i,int j,int order,int k,int h)

//反轉二叉樹

void reverse(struct node *bt)

//層次遍歷二叉樹輸出結果

void print(struct node *q)

if( t->rchild!=null )

} }int main()

{ int n;

while(~scanf("%d",&n))

{ int pre[35];

int order[35];

int i;

for( i=1;i<=n;i++ ) scanf("%d",&order[i]);

for( i=1;i<=n;i++ ) scanf("%d",&pre[i]);

struct node *bt;

bt=createtree(pre,1,n,order,1,n);

//print(bt);

reverse(bt);

print(bt);

for(i=0;i

玩轉二叉樹

給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空...

玩轉二叉樹(二叉樹的遍歷)

時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...

PTA玩轉二叉樹

7 26 玩轉二叉樹 25 分 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前...