二叉樹 ---- 前序 中序 後序 知二求一
二叉樹 ---- 前序 中序 後序 知二求一
先說一下什麼是二叉樹的前中後序;
根:根節點 左代表遍歷左子樹 右代表遍歷右子樹
前序:根—左---右
中序:左—根---右
後序:左—右---根
如圖求前序:
//葉子結點簡單的說就是沒有兒子的節點;
先遍歷到a節點,再遍歷它的左子樹;
遍歷到b節點,再遍歷它的左子樹;
遍歷到c節點,發現c節點為葉子結點,返回到它的根節點b; 遍歷b節點的右子樹;
遍歷到d節點,發現d節點為葉子結點,返回到節點a;遍歷a節點的右子樹;
遍歷到e節點,再遍歷它的左子樹;發現它沒有左子樹,遍歷它的右子樹;
遍歷到f節點,發現f節點為葉子結點,遍歷結束;
中序後序自己動手推一下
前序: a b c d e f
中序: c b d a e f’
後序: c d b f e a
還有前序和後序推出來的中序不唯一;
這裡還有一些練習
知道前序中序求後序
答案:
#include<bits/stdc++.h>
using namespace std;
string z;//中序
string q;//前序
void dfs(int l1,int r1,int l2,int r2) {//l1 r1 為前序,l2 r2 為中序
if(l1 > r1 || l2 > r2) return ;
for(int i = l1;i <= r1;i++) {
if(z[i] == q[l2]) {
dfs(l1,i - 1,l2 + 1,l2 + i - l1);//遍歷左子樹,i - l1 是左子樹的節點數
dfs(i + 1,r1,l2 + i - l1 + 1,r2);//遍歷右子樹
cout << q[l2];//因為是左右根的順序 最後輸出的就是根節點
}
}
}
int main() {
cin >> z;
cin >> q;
int len = q.size() - 1;
dfs(0,len,0,len);
return 0;
}
#include<bits/stdc++.h>
using namespace std;
string z;
string h;
void dfs(int l1,int r1,int l2,int r2) {
if(l1 > r1 || l2 > r2) return ;
for(int i = l1;i <= r1;i++) {
if(z[i] == h[r2]) {
cout << h[r2];
dfs(l1,i - 1,l2,l2 + i - l1 - 1);
dfs(i + 1,r1,l2 + i - l1,r2 - 1);
}
}
}
int main() {
cin >> z;
cin >> h;
int len = h.size() - 1;
dfs(0,len,0,len);
return 0;
}
相關文章
- 二叉樹的前序、中序、後序三種遍歷二叉樹
- 二叉樹的前序,中序,後序遍歷方法總結二叉樹
- 已知二叉樹的先序和後序求任意一中序二叉樹
- 二叉樹的前序、中序、後序的遞迴和迭代實現二叉樹遞迴
- 144. 二叉樹的遍歷「前序、中序、後序」 Golang實現二叉樹Golang
- 【樹01】對二叉樹前序/中序/後序遍歷演算法的一些思考二叉樹演算法
- 從前序與中序構造二叉樹二叉樹
- 還原二叉樹(先序+中序-〉後序)二叉樹
- 二叉樹迭代器(中序遞迴、前序和後序遍歷)演算法二叉樹遞迴演算法
- 144.二叉樹的前序遍歷145.二叉樹的後序遍歷 94.二叉樹的中序遍歷二叉樹
- 資料結構實驗之二叉樹八:(中序後序)求二叉樹的深度資料結構二叉樹
- 【資料結構與演算法】二叉樹的 Morris 遍歷(前序、中序、後序)資料結構演算法二叉樹
- 二叉樹中序和後序遍歷表示式二叉樹
- L2_006樹的遍歷(後序+中序->前序/層序)
- 二叉樹的四種遍歷方法:先序,中序,後序,層序二叉樹
- 根據二叉樹的前序遍歷和中序遍歷輸出二叉樹;二叉樹
- 刷題筆記:樹的前序、中序、後序遍歷筆記
- 889. 根據前序和後序遍歷構造二叉樹二叉樹
- 後序+中序(前序+中序)重構樹,嚴格O(N)演算法演算法
- 先序、中序、後序序列的二叉樹構造演算法二叉樹演算法
- 二叉樹--後序遍歷二叉樹
- 從中序與後序遍歷序列構造二叉樹二叉樹
- Leetcode 889. 根據前序和後序遍歷構造二叉樹LeetCode二叉樹
- 演算法 -- 實現二叉樹先序,中序和後序遍歷演算法二叉樹
- 根據前序遍歷序列、中序遍歷序列,重建二叉樹二叉樹
- 二叉樹的先中後序遍歷二叉樹
- 二叉樹的先,中,後序遍歷二叉樹
- 二叉樹的前中後序遍歷二叉樹
- 遞迴和迭代實現二叉樹先序、中序、後序和層序遍歷遞迴二叉樹
- 二叉樹:前中後序迭代方式統一寫法二叉樹
- 【劍指offer】【4】根據前序和中序結果,重建二叉樹二叉樹
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- LeetCode-105-從前序與中序遍歷序列構造二叉樹LeetCode二叉樹
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 【根據前序和中序遍歷構造二叉樹】棧+迭代 || 遞迴二叉樹遞迴
- LeetCode 105. 從前序與中序遍歷序列構造二叉樹 | PytLeetCode二叉樹
- python-二叉樹:前、中、後、層序遍歷Python二叉樹
- LeetCode-106-從中序與後序遍歷序列構造二叉樹LeetCode二叉樹