我們經常遇到已知樹的兩種遍歷的順序,讓我們寫出原來的樹這樣的題目,今天我也遇到了,就索性寫了下:
普及: 前序+後序!=樹 前序+中序 = 樹 中序 + 後序 = 樹
注:= :表示能寫出樹, !=表示不能寫出樹
//本演算法的思想要從遞迴說起,已知中序+後序,那麼我們構造樹的過程是這樣的:
//從後序中找到根,然後在中序中找到根元素,辨別出左右子樹以及左右子樹的數量
//用左右子樹的數量在分別到中序中找到左右子樹的根的位置,重複上述過程
#includeusing namespace std;
int a[7] = ; //中序遍歷的結果
int b[7] = ;//後續遍歷的結果
int c[7];//儲存樹的廣度優先遍歷的結果,也是最終的結果
int dfs(int m,int n,int p,int q,int position);
int location(int n);
int main()
int root = b[q];
c[position] = root;
int loc = location(root);
int dis = n - loc;
dfs(m,loc-1,p,q-dis-1,2*position+1); //對左子樹做同樣的處理
dfs(loc+1,n,q-dis,q-1,2*position+2);//對右子樹做同樣的處理
}int location(int n)
}}
二叉樹已知先序中序求後序 已知中序後序求先序
在做資料結構面試題的時候我們會經常發現有關二叉樹的題目總是這樣的 栗子 已知某二叉樹先序為 中序為 求後序 已知某二叉樹中序為 後序為 求先序 需要注意的是 我們只能夠通過已知先序中序求後序或已知中序後序求先序,而不能夠已知先序和後序求中序 下面總結一下兩種題的做法 首先回顧知識點 第一種 已知乙個...
二叉樹 已知先序和中序求後序,已知中序和後序求先序
樹的三種遍歷方式的遍歷順序 先序遍歷 根 左子樹 右子樹 特點 第乙個元素為根 中序遍歷 左子樹 根 右子樹 特點 根的兩邊分別為左子樹和右子樹 後序遍歷 左子樹 右子樹 根 特點 最後乙個元素為根 有如下圖的二叉樹 其先序 中序 後序遍歷分別為 dbacegf abcdefg acbfged。1 ...
資料結構 已知先序中序求後序,已知中序後序求先序
總結下二叉樹的已知兩種遍歷方式求第三種遍歷順序的方法,已知先序和中序遍歷或者後序與中序遍歷後二叉樹是唯一確定的,下面介紹怎麼求出第三種遍歷順序。先序遍歷順序為 根結點 左子結點 右子結點,中序遍歷為 左子結點 根結點 右子結點,我們注意到,先序遍歷的第乙個元素就是二叉樹根結點,我們在中序遍歷中以該元...