給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。
輸入輸入第一行給出乙個正整數n(n≤30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。
輸出在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。
樣例輸入
71 2 3 4 5 6 7
4 1 3 2 6 5 7
樣例輸出
4 6 1 7 5 3 2
#include
#define maxsize 30
using
namespace std;
struct btnode
;class
btnodeclass
;btnodeclass::
btnodeclass()
btnodeclass::
~btnodeclass()
btnode* btnodeclass::
btreefromorderings
(int
* inorder,
int* preorder,
int length)
if(r ==
null
)r = p;
p->data =
*preorder;
int rootindex;
for(rootindex =
0; rootindex) p-
>lchild =
btreefromorderings
(inorder, preorder +
1, rootindex)
; p-
>rchild =
btreefromorderings
(inorder + rootindex +
1, preorder + rootindex +
1, length - rootindex -1)
;return p;
}void btnodeclass::
levelorder()
else
cout <<
" "<< p-
>data;
if(p-
>rchild !=
null)if
(p->lchild !=
null)}
}int
main()
for(i =
0; i < n; i++
) btnodeclass tree
; tree.
btreefromorderings
(a, b, i)
; tree.
levelorder()
;return0;
}
玩轉二叉樹
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...
玩轉二叉樹
給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空...
玩轉二叉樹(二叉樹的遍歷)
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...