傳送門 : hdu 1710
水遞迴, 記得以前剛學資料結構的時候還用結構體模擬字串做用字串是通過string的find函式, 這裡讀取的時候可以直接記錄先序遍歷的元素在中序中的位置
輸出左右子樹, 然後輸出根
#include
#include
#include
using
namespace
std;
const
int maxn = 1000 + 5;
int pre[maxn], in[maxn], n, pos[maxn];
void creat(int l, int r, int l, int r)
int id = pos[pre[l]];
if(id > l) creat(l + 1, l + id - l, l, id - 1);//邊界, 左
if(id < r) creat(l + 1 + id - l, r, id + 1, r);//右
printf("%d%s", in[id], l == 1 ? "\n" : " ");
}int main()
creat(1, n, 1, n);
}return
0;}
hdu1710 二叉樹詳解
題意 給出前序遍歷序列和中序遍歷序列,求後序遍歷序列 首先要根據前序和中序把樹建立起來,再寫後序遍歷就好 思路很簡單結果還是被我寫跪了,看了好些博文,感覺,好吧不算是什麼小技巧,是我編碼太渣太渣。有兩個地方借鑑了,於是我居然很有興致的把自己的也詳細詳細的全註解上了,要是平時也有耐心這樣多好。就不會過...
hdu 1710恢復二叉樹
恢復二叉樹是面試的經典題目,首先我們知道的結論是已知前序和中序或者後序和中序,那麼我們就可以唯一的確定乙個二叉樹。思路是在 中序的某一段中 前序 後序 中靠前 後 的 節點是這一段中序的父親節點,並且由這個節點將這一段劃分為二。當不能劃分的時候就是到了葉子節點。所以我們可以考慮傳遞父親節點和他的部分...
hdu 1710 二叉樹遍歷
二叉樹的遍歷 先序遍歷 preorder tr ersal 先遍歷父節點,然後是左孩子,右孩子。中序遍歷 inorder tr ersal 先遍歷左孩子,然後是父節點,最後遍歷右孩子。後序遍歷 postorder tr ersal 先遍歷左孩子和右孩子,然後遍歷父節點。題目大意 給出乙個二叉樹的先序...