已知二叉樹的前序和中序順序,如何求後續順序

2021-10-05 22:20:53 字數 1006 閱讀 6923

對一棵二叉樹進行遍歷,我們可以採取3種順序進行遍歷,分別是前序遍歷、中序遍歷和後序遍歷。這三種方式是以訪問父節點的順序來進行命名的:

前序遍歷:根 ——>左——>右

中序遍歷:左 ——>根——>右

後序遍歷:左 ——>右——>根

對於這棵樹,前序遍歷是:abcdef

中序遍歷是:cbdaef

後續遍歷是:cdbfea

——————————————————————————————————————

已知二叉樹的前序遍歷和中序遍歷,如何得到它的後序遍歷?

我們首先要利用以下幾個特性:

我們以乙個例子做一下這個過程,假設:

前序遍歷的順序是: cabghedf

中序遍歷的順序是: ghbacdef

第一步,我們根據特性a,可以得知根節點是c,然後,根據特性c,我們知道左子樹是:ghba,右子樹是:def。

第二步,取出左子樹,左子樹的前序遍歷是:abgh,中序遍歷是:ghba,根據特性a和c,得出左子樹的父節點是a,並且a沒有右子樹。

第三步,使用同樣的方法,前序是bgh,中序是gbh,得出父節點是b,g和h分別是左右節點。

第四步,回到右子樹,它的前序是edf,中序是def,依然根據特性a和c,得出父節點是e,左右節點是d和f。

到此,我們得到了這棵完整的二叉樹,因此,它的後序遍歷就是:ghbadfec。

已知前序 中序 求二叉樹

題目如下 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 二叉樹的前序遍歷順序是 先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。中序遍歷順序是 中序遍歷根節點的左子樹,...

已知二叉樹的前序和中序,重建二叉樹 筆記

題目如下 輸入某二叉樹的前序遍歷和中序遍歷的結果,請重建出該二叉樹。假設輸入的前序遍歷和中序遍歷的結果中都不含重複的數字。例如輸入前序遍歷序列和中序遍歷序列,則重建二叉樹並返回。分析 二叉樹的前序遍歷順序是 先訪問根節點,然後前序遍歷左子樹,再前序遍歷右子樹。中序遍歷順序是 中序遍歷根節點的左子樹,...

已知前序和中序遍歷恢復二叉樹

cpp view plain copy include using namespace std define treelen 6 資料結構定義 struct node void rebuild char ppreorder,char pinorder,intntreelen,node proot 獲...