給滿出二叉樹,編寫演算法將其轉化為求和樹
什麼是求和樹:二叉樹的求和樹, 是一顆同樣結構的二叉樹,其樹中的每個節點將包含原始樹中的左子樹和右子樹的和。
二叉樹給出前序和中序輸入,求和樹要求中序輸出;二叉樹:
10/ \
-2 6
/ \ / \
8 -4 7 5
求和樹:
20(4-2+12+6)
/ \
4(8-4) 12(7+5)
/ \ / \
0 0 0 0
所有處理資料不會大於int;
輸入描述
2行整數,第1行表示二叉樹的前序遍歷,第2行表示二叉樹的中序遍歷,以空格分割輸出描述
1行整數,表示求和樹的中序遍歷,以空格分割輸入
輸出10 -2 8 -4 6 7 58 -2 -4 10 7 6 5
這題卡記憶體。在重構二叉樹的時候,不能用雜湊表儲存中序遍歷結果。0 4 0 20 0 12 0
這題不用重構二叉樹(在樹的資訊中加乙個sum屬性),然後再中序遍歷輸出。可以再重構的時候直接求得中序遍歷結果
#include #include #include #include using namespace std;
int dfs(vector& pre, vector& vin, vector& res, int pl, int pr, int vl, int vr);
vectorrebuildtree(vector& pre, vector& vin)
int dfs(vector& pre, vector& vin, vector& res, int pl, int pr, int vl, int vr)
int main()
while (cin)
vectorres = rebuildtree(pre, vin);
if (!res.empty()) cout << res[0];
for (int i = 1; i < res.size(); i++)
cout << " " << res[i];
cout << endl;
}
將滿二叉樹轉換為求和樹
在網上看到乙個道題目覺的有些意思分享給大家。給滿出二叉樹,編寫演算法將其轉化為求和樹 什麼是求和樹 二叉樹的求和樹,是一顆同樣結構的二叉樹,其樹中的每個節點將包含原始樹中的左子樹和右子樹的和。二叉樹 10 2 6 8 4 7 5 求和樹 20 4 2 12 6 4 8 4 12 7 5 0 0 0 ...
python 將滿二叉樹轉換成求和樹
思路 根據前序遍歷和中序遍歷構造樹,唯一的區別在於 根節點的取值 不再是root.val而是sum pre 1 除了根節點之外的所有節點和。class tree def init self,x self.val x self.left none self.right none pre list ma...
樹轉換為二叉樹
輸入一顆普通有序樹,將它轉換為對應的二叉鍊錶儲存,然後輸出該二叉樹的先序和後序遍歷序列。包含多組測試資料。每組測試資料第1行為樹的結點個數n 1 n 26 接下來包含n行,其中第i行 1 n n 的資料依次為結點i的資料值ai 為乙個小寫字母 後面各元素為結點i的兒子序列,以0結束。若ai後僅含乙個...