PAT1020 已知中序,後序遍歷轉前序遍歷

2022-05-15 08:50:33 字數 665 閱讀 4691

已知後序與中序輸出前序(先序):

後序:3, 4, 2, 6, 5, 1(左右根)

中序:3, 2, 4, 1, 6, 5(左根右)

已知一棵二叉樹,輸出前,中,後時我們採用遞迴的方式。同樣也應該利用遞迴的思想:

對於後序來說,最後乙個節點肯定為根。在中序中可以找到左子樹的個數,那麼就可以在後序中找到左子樹的根;同理也可以找到右子樹。

void pre(int root, int start, int

end)

如果想要按照層次輸出數,那麼我們可以增加乙個index變數,來儲存結點。根節點為0,左子樹為index*2+1, 右子樹為index*2+2,那麼我們按順序輸出不是-1的節點即可

#include#include

#include

using

namespace

std;

vector

lever(100000,-1),post,in

;int

n;void pre(int root,int start,int end,int

index)

intmain()

else

printf(

"%d

",lever[i]);}}

}

已知中序遍歷和後序遍歷,求前序遍歷

已知中序遍歷和後序遍歷,求前序遍歷 演算法的主要部分是將中序遍歷分成左中右三部分 將後序遍歷分成左右中三部分 最後後序建樹的時候節點就等於中間的部分 左子樹由中序遍歷的左部分和後序遍歷的左部分構建 右子樹由中序遍歷的右部分和後序遍歷的右部分構建 include include include inc...

已知後序遍歷和中序遍歷求前序遍歷

而已知後序遍歷和中序遍歷求前序遍歷的過程差不多,但由於後序遍歷是最後才訪問根節點的 所以要從後開始搜尋,例如上面的例子,後序遍歷為 gbdehfca,中序遍歷為 dgbaechf 後序遍歷中的最後乙個元素是根節點,a,然後查詢中序中a的位置 把中序遍歷分成 dgb a echf,而因為節點個數要對應...

資料結構 已知先序中序求後序,已知中序後序求先序

總結下二叉樹的已知兩種遍歷方式求第三種遍歷順序的方法,已知先序和中序遍歷或者後序與中序遍歷後二叉樹是唯一確定的,下面介紹怎麼求出第三種遍歷順序。先序遍歷順序為 根結點 左子結點 右子結點,中序遍歷為 左子結點 根結點 右子結點,我們注意到,先序遍歷的第乙個元素就是二叉樹根結點,我們在中序遍歷中以該元...