hdu 1710恢復二叉樹

2022-08-19 21:00:12 字數 746 閱讀 9491

恢復二叉樹是面試的經典題目,

首先我們知道的結論是已知前序和中序或者後序和中序,那麼我們就可以唯一的確定乙個二叉樹。

思路是在  中序的某一段中  前序(後序)中靠前(後)的 節點是這一段中序的父親節點,並且由這個節點將這一段劃分為二。。當不能劃分的時候就是到了葉子節點。

所以我們可以考慮傳遞父親節點和他的部分兒子,再在這一些節點裡面找到乙個父親。。這樣就可以遞迴解決問題。

ps。很簡單的思路,但是由於手殘加腦殘,寫了不少時間,下面是ac**。。蒟蒻加油!

#include #include #include #include #include #include #include using namespace std;

int n;

int mid[1005];

int first[1005];

int vis[1005];

int has[1005];

vectorson[1005];

void sl(int fa,int l,int r)

int main()

{ while(cin>>n){

memset(vis,0,sizeof(vis));

ans.clear();

for(int i=0;i<1005;i++) son[i].clear();

for(int i=0;i>first[i];

for(int i=0;i>mid[i];

for(int i=0;i

hdu1710 二叉樹詳解

題意 給出前序遍歷序列和中序遍歷序列,求後序遍歷序列 首先要根據前序和中序把樹建立起來,再寫後序遍歷就好 思路很簡單結果還是被我寫跪了,看了好些博文,感覺,好吧不算是什麼小技巧,是我編碼太渣太渣。有兩個地方借鑑了,於是我居然很有興致的把自己的也詳細詳細的全註解上了,要是平時也有耐心這樣多好。就不會過...

hdu 1710 二叉樹遍歷

二叉樹的遍歷 先序遍歷 preorder tr ersal 先遍歷父節點,然後是左孩子,右孩子。中序遍歷 inorder tr ersal 先遍歷左孩子,然後是父節點,最後遍歷右孩子。後序遍歷 postorder tr ersal 先遍歷左孩子和右孩子,然後遍歷父節點。題目大意 給出乙個二叉樹的先序...

HDU 1710 二叉樹水題

傳送門 hdu 1710 水遞迴,記得以前剛學資料結構的時候還用結構體模擬字串做 用字串是通過string的find函式,這裡讀取的時候可以直接記錄先序遍歷的元素在中序中的位置 輸出左右子樹,然後輸出根 include include include using namespace std cons...