hdu1710(二叉樹的歷遍)

2021-09-06 07:47:13 字數 729 閱讀 1161

題意:依次給出二叉樹的前序歷遍和中序歷遍,要你輸出它的後序歷遍。

感嘆:這個題目,我不得不感慨用遞迴解決二叉樹的問題真心碉堡了。也不得不感嘆,自己還是太水了,記得以前我的乙個學長做這個題目,沒超過十分鐘後就ac了。

思路:用遞迴做的巨集觀思路很簡單,就是結合前序歷遍和中序歷遍,找根節點,在中序歷遍中,根節點左邊的全部是左子樹,右邊的全部是右子樹,那麼將這些結點慢慢劃分為乙個個子問題。左子樹的第乙個結點又可以看作乙個新的根節點,它有它的左子樹和右子樹,同理,慢慢劃分,遞迴的思路也就出來了。假如中序歷遍中第i個點是根節點,那麼劃分為兩個區域,0~i和i~n-1;

#includeusing namespace std;

typedef struct tree

tree;

tree *root;

tree *creat(int *a,int *b,int n) //建樹

} return null; //沒有找到的,返回null

}void libian(tree *h) //後序歷遍

}int main()

for(i=0;iroot=creat(a,b,n);

tree *h=root;

libian(h);

} return 0;

}

hdu1710(二叉樹的歷遍)

題意 依次給出二叉樹的前序歷遍和中序歷遍,要你輸出它的後序歷遍。感嘆 這個題目,我不得不感慨用遞迴解決二叉樹的問題真心碉堡了。也不得不感嘆,自己還是太水了,記得以前我的乙個學長做這個題目,沒超過十分鐘後就ac了。思路 用遞迴做的巨集觀思路很簡單,就是結合前序歷遍和中序歷遍,找根節點,在中序歷遍中,根...

hdu1710 二叉樹詳解

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

hdu 1710恢復二叉樹

恢復二叉樹是面試的經典題目,首先我們知道的結論是已知前序和中序或者後序和中序,那麼我們就可以唯一的確定乙個二叉樹。思路是在 中序的某一段中 前序 後序 中靠前 後 的 節點是這一段中序的父親節點,並且由這個節點將這一段劃分為二。當不能劃分的時候就是到了葉子節點。所以我們可以考慮傳遞父親節點和他的部分...