這道題和l2-006樹的遍歷是幾乎一樣的思路,都是通過兩個遍歷序列得到原來的樹,然後再進行層序遍歷。
這題的細小區別在於給的是前序遍歷,因此這次的根結點應該是序列的第乙個。
第一次寫的時候寫了個翻轉的函式,但是之後又想了想,只要在層序遍歷時先push右子樹就實現了翻轉,因此可以省略這個函式。
#include#includeusing namespace std;
int inorder[40];
int preorder[40];
int ltree[40];
int rtree[40];
int n;
//l1,r1描述中序,l2,r2描述前序
int rebuild(int l1, int r1, int l2, int r2)
void reverse(int root)
return;
}int main()
cout << endl;
system("pause");
return 0;
}
L2 011 玩轉二叉樹 二叉樹
題目傳送門 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以...
L2 011 玩轉二叉樹
給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 輸入第一行給出乙個正整數n 30 是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空...
pat L2 011 玩轉二叉樹
時間限制 400 ms 記憶體限制 65536 kb 長度限制 8000 b 判題程式 standard 作者 陳越 給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。輸入格式 ...