hdu 1710 二叉樹遍歷

2022-09-23 10:03:08 字數 879 閱讀 8904

/*

二叉樹的遍歷:

先序遍歷(preorder tr**ersal):先遍歷父節點,然後是左孩子,右孩子。

中序遍歷(inorder tr**ersal):先遍歷左孩子,然後是父節點,最後遍歷右孩子。

後序遍歷(postorder tr**ersal):先遍歷左孩子和右孩子,然後遍歷父節點。

*/題目大意:給出乙個二叉樹的先序和中序遍歷序列,求後序遍歷序列;

思路:將一棵二叉樹分為根節點,左子樹,右子樹三部分。先讓根節點入棧,然後遞迴處理右子樹和左子樹(必須先右後左)。最後依次出棧即得到後序遍歷序列。

ps:本題解法是在假設所有節點數字不同的條件下進行的,題目並沒有給出這個條件,不過能過測試。

[cpp]

#include  

#include  

#include  

#include  

#include  

using namespace std; 

const int n=1005; 

int preorder[n],inorder[n]; 

stackpostorder; 

//二叉樹由先序序列和中序序列求後序序列  

void getpost(int pstart,int pend,int istart,int iend) 

j=pstart+(i-istart)+1; //j表示先序中左右子樹的分界點  

if(j<=pend && i+1<=iend) 

if(pstart+1<=j-1 && istart<=i-1) 

} int main() 

printf("\n"); 

} return 0; 

hdu1710 二叉樹詳解

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

hdu 1710恢復二叉樹

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

HDU 1710 二叉樹水題

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