玩轉二叉樹
給定一棵二叉樹的中序遍歷和前序遍歷,請你先將樹做個鏡面反轉,再輸出反轉後的層序遍歷的序列。所謂鏡面反轉,是指將所有非葉結點的左右孩子對換。這裡假設鍵值都是互不相等的正整數。
輸入格式:
輸入第一行給出一個正整數N(≤30),是二叉樹中結點的個數。第二行給出其中序遍歷序列。第三行給出其前序遍歷序列。數字間以空格分隔。
輸出格式:
在一行中輸出該樹反轉後的層序遍歷的序列。數字間以1個空格分隔,行首尾不得有多餘空格。
輸入樣例:
7
1 2 3 4 5 6 7
4 1 3 2 6 5 7
輸出樣例:
4 6 1 7 5 3 2
解題
遍歷時先遍歷右子樹即可,見L2-011 玩轉二叉樹
程式碼實現見樹的遍歷
僅是將輸入和程式碼實現由後序、中序,變為中序、前續。
使用了小技巧,不建議使用
程式碼
#include <iostream>
using namespace std;
struct cheng {
int num = 0;
int all[20];
} cheng[30];
int findXian(int *qian, int *zhong, int n, int c) {
if (n > 0) {
int root = qian[0];
int i;
for (i = 0; i < n; ++i) {
if (zhong[i] == root) {
cheng[c].all[cheng[c].num] = root;
cheng[c].num++;
break;
}
}
findXian(qian + i+1, zhong + i + 1, n-i-1, c + 1);//先右後左
findXian(qian+1, zhong, i, c + 1);
}
return c;
}
int main() {
int n;
cin >> n;
int qian[n], zhong[n];
for (int i = 0; i < n; ++i) {
cin >> zhong[i];
}
for (int i = 0; i < n; ++i) {
cin >> qian[i];
}
findXian(qian, zhong, n, 0);
int temp = 0;
while (cheng[temp].num != 0) {
for (int j = 0; j < cheng[temp].num; ++j) {
if (temp != 0)cout << " " << cheng[temp].all[j];
else cout << cheng[temp].all[j];
}
temp++;
}
}
相關文章
- 玩轉二叉樹(樹的遍歷)二叉樹
- L2-011 玩轉二叉樹二叉樹
- 團體程式設計天梯賽-玩轉二叉樹(簡潔建樹)程式設計二叉樹
- JavaScript 二叉搜尋樹以及實現翻轉二叉樹JavaScript二叉樹
- 二叉樹和森林轉換二叉樹
- 平衡二叉樹(AVL樹)和 二叉排序樹轉化為平衡二叉樹 及C語言實現二叉樹排序C語言
- iOS實現反轉二叉樹iOS二叉樹
- 滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹(二叉查詢樹)和最優二叉樹二叉樹
- [資料結構] 樹、二叉樹、森林的轉換資料結構二叉樹
- 二叉樹翻轉(分治思想的典型)二叉樹
- 程式碼隨想錄day14 || 226 翻轉二叉樹,101 對稱二叉樹, 104 二叉樹的最大深度, 111 二叉樹的最小深度二叉樹
- 如何輕鬆玩轉樹莓派系統?樹莓派
- 排序二叉樹和平衡二叉樹排序二叉樹
- 二叉樹(順序儲存二叉樹,線索化二叉樹)二叉樹
- 手擼二叉樹——AVL平衡二叉樹二叉樹
- 手擼二叉樹——二叉查詢樹二叉樹
- 資料結構之樹結構概述(含滿二叉樹、完全二叉樹、平衡二叉樹、二叉搜尋樹、紅黑樹、B-樹、B+樹、B*樹)資料結構二叉樹
- OpenYurt 入門 - 在樹莓派上玩轉 OpenYurt樹莓派
- LeetCode每日一題: 翻轉二叉樹(No.226)LeetCode每日一題二叉樹
- 二叉樹二叉樹
- 【LeetCode-二叉樹】二叉樹前序遍歷LeetCode二叉樹
- 判斷二叉樹是否為滿二叉樹二叉樹
- 資料結構中的樹(二叉樹、二叉搜尋樹、AVL樹)資料結構二叉樹
- 「玩轉樹莓派」樹莓派 3B+ 配置無線WiFi樹莓派WiFi
- 二叉樹:構造二叉樹(通過前序和中序遍歷)、映象翻轉、層次遍歷二叉樹
- 自己動手作圖深入理解二叉樹、滿二叉樹及完全二叉樹二叉樹
- LeetCode 156 Binary Tree Upside Down 上下翻轉二叉樹LeetCodeIDE二叉樹
- 【C++】翻轉二叉樹(遞迴、非遞迴)C++二叉樹遞迴
- 交換左右孩子-leetcode-226. 翻轉二叉樹LeetCode二叉樹
- 二叉樹的建立、遍歷、廣義錶轉換二叉樹
- Leetcode226.翻轉二叉樹 Invert Binary Tree(Java)LeetCode二叉樹Java
- 玩轉樹莓派之系統安裝篇樹莓派
- 程式碼隨想錄 第23天 | 669. 修剪二叉搜尋樹 ● 108.將有序陣列轉換為二叉搜尋樹 ● 538.把二叉搜尋樹轉換為累加樹 ● 總結篇陣列
- 二叉樹、B樹以及B+樹二叉樹
- 平衡二叉樹,B樹,B+樹二叉樹
- 相同二叉樹和鏡面二叉樹問題二叉樹
- 深入學習二叉樹 (一) 二叉樹基礎二叉樹
- 樹和二叉樹簡介二叉樹