高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区

 

當前快看:1159 Structure of a Binary Tree + 根據前序和中序構建二叉樹+ 層序遍歷模板復習

發布時間:2023-05-03 18:24:06  |  來源:博客園  


(資料圖片僅供參考)

題目鏈接:https://pintia.cn/problem-sets/994805342720868352/exam/problems/1478635126488367104

唉,今天的bug出在了下面這條語句。

if (tree[root_key].left * tree[root_key].right < 0) full_tree = false;

我寫成了

full_tree = !(tree[root_key].left * tree[root_key].right < 0); // 這就會導致full_tree即便變成了false也有可能變回true。導致錯判。

根據前序和中序構建二叉樹

參考的柳神代碼,靈活的點就在于,用下標表示數組區間,嗯,相比直接傳數組的引用,輕了不少。

int build(int R, int start, int end, int fa) { // 1. post數組的最右邊的位置;2. start, end : in數組的起始位置;3. 對于這題來說還需要記錄父節點fa。    if (start > end) return -1;    int root_key = post[R], pos = start;    while (in[pos] != root_key && pos < end) pos++;    tree[root_key].level = tree[fa].level + 1;    tree[root_key].fa = fa;    tree[root_key].left = build(R - 1 - (end - pos), start, pos - 1, root_key); // 記住post的最后一個元素的下標一定要用 R 來相對計算,而不是只用 pos,不然在遞歸的過程中,即便前幾層看不出什么,往后一定會發生錯位。    tree[root_key].right = build(R - 1, pos + 1, end, root_key);  // 下標的選擇是經常容易出bug的,一定要想清楚    if (tree[root_key].left * tree[root_key].right < 0) full_tree = false;    return root_key;}

題解代碼:

#include#include#include#includeusing namespace std;int n, m;struct Node {    Node() {        fa = left = right = -1;    }    int level, fa, left, right;} tree[1005];bool full_tree = true;int in[35], post[35], num1, num2;int build(int R, int start, int end, int fa) { // 1. post數組的最右邊的位置;2. start, end : in數組的起始位置;3. 對于這題來說還需要記錄父節點fa。    if (start > end) return -1;    int root_key = post[R], pos = start;    while (in[pos] != root_key && pos < end) pos++;    tree[root_key].level = tree[fa].level + 1;    tree[root_key].fa = fa;    tree[root_key].left = build(R - 1 - (end - pos), start, pos - 1, root_key); // 記住post的最后一個元素的下標一定要用 R 來相對計算,而不是只用 pos,不然在遞歸的過程中,即便前幾層看不出什么,往后一定會發生錯位。    tree[root_key].right = build(R - 1, pos + 1, end, root_key);  // 下標的選擇是經常容易出bug的,一定要想清楚    if (tree[root_key].left * tree[root_key].right < 0) full_tree = false;    return root_key;}bool siblings(int a, int b) {    return tree[a].fa == tree[b].fa;}bool same_level(int a, int b) {    return tree[a].level == tree[b].level;}bool parent(int a, int b) {    return tree[b].fa == a;}bool left_child(int a, int b) {    return tree[b].left == a;}bool right_child(int a, int b) {    return tree[b].right == a;}int main() {    cin >> n;    for (int i = 0; i < n; i++) cin >> post[i];    for (int i = 0; i < n; i++) cin >> in[i];    int root = post[n - 1];    build(n - 1, 0, n - 1, 0);    cin >> m;    while (m--) {        string str;        cin >> str;        if (str[0] == "I") {             getline(cin, str);            cout << (full_tree ? "Yes" : "No") << endl;        } else {            num1 = stoi(str);            cin >> str;            if (str[0] == "a") {                cin >> num2 >> str >> str;                if (str[0] == "s") {                    cout << (siblings(num1, num2) ? "Yes" : "No") << endl;                } else {                    getline(cin, str);                    cout << (same_level(num1, num2) ? "Yes" : "No") << endl;                }            } else {                cin >> str >> str;                switch(str[1]) {                    case "o" : {                        cout << (root == num1 ? "Yes" : "No") << endl;                    } break;                    case "a" : {                        cin >> str >> num2;                        cout << (parent(num1, num2) ? "Yes" : "No") << endl;                    } break;                    case "e" : {                        cin >> str >> str >> num2;                        cout << (left_child(num1, num2) ? "Yes" : "No") << endl;                    } break;                    case "i" : {                        cin >> str >> str >> num2;                        cout << (right_child(num1, num2) ? "Yes" : "No") << endl;                    } break;                }                           }        }    }    return 0;}

剛做的時候以為要用層序遍歷,順便復習一下吧。

層序遍歷模板代碼:

vector> level_order(Node *root) {    vector> res;    queue q;    if (root) q.push(root);    while (q.size()) {        int size = q.size();        vector v;        for (int i = 0; i < size; i++) {            Node *node = q.front();            q.pop();            // 上一排的元素依次出隊            v.push_back(node->val);            // 下一排的節點全部入隊            if (node->left) q.push(node->left);            if (node->right) q.push(node->right);        }        // 存入一排        res.push_back(v);    }    return res;}

關鍵詞:

 

最近更新

高清国语自产拍免费一区二区三区_亚洲最大av网_亚洲午夜性刺激影院_国产色婷婷国产综合在线理论片a_亚洲国产视频一区二区_亚洲欧洲精品一区二区精品久久久_在线观看男女av免费网址_久热精品视频在线观看一区_亚洲日本va在线观看_亚洲少妇中出一区
欧美成人精品3d动漫h| 亚洲日本青草视频在线怡红院| 一区在线播放视频| 日日夜夜精品视频天天综合网| 国产精品一二三四| 韩国成人一区| 欧美亚男人的天堂| 国产精品视频看| 日韩av不卡一区二区| 成人精品小蝌蚪| 日本一区不卡| 欧美一级久久久| 一区二区三区在线免费视频| 国产精品夜夜嗨| 欧美日韩在线不卡一区| 欧美高清一级片在线| 亚洲色图清纯唯美| 国产成人在线视频网站| 欧美综合77777色婷婷| 91精品国模一区二区三区| 最新日韩在线视频| 国产精品综合久久| 欧美一区二区高清在线观看| 欧美一区二区三区精品| 亚洲影视在线播放| zzijzzij亚洲日本少妇熟睡| 亚洲一区二区精品在线| 国产色婷婷亚洲99精品小说| 麻豆91在线播放| 久久久久资源| 精品国产1区二区| 奇米影视一区二区三区| 国产精品免费一区二区| 欧美精品三级日韩久久| 亚洲一区二区高清| 147欧美人体大胆444| 欧美午夜在线一二页| 亚洲美女在线一区| av在线这里只有精品| 欧美午夜理伦三级在线观看| 综合久久综合久久| 波多野结衣亚洲一区| 在线观看www91| 日韩一区欧美一区| 成人久久久精品乱码一区二区三区| 亚洲一区二区在线观| 国产精品乱码妇女bbbb| 国产成人免费视频网站高清观看视频| 性欧美大战久久久久久久免费观看| 国产日产精品一区| 国产成人午夜电影网| 色综合久久88色综合天天免费| 中文字幕在线观看不卡视频| 不卡视频免费播放| 在线视频观看一区| 亚洲乱码中文字幕| 99久久综合狠狠综合久久止 | 风间由美一区二区三区| 91精品国产91久久综合桃花| 日韩精品电影在线| 欧美精品一区二区三区在线看午夜| 久久综合久久鬼色中文字| 国模冰冰炮一区二区| 亚洲欧美日韩国产yyy| 亚洲欧美一区二区不卡| av日韩中文字幕| 欧美变态口味重另类| 国产自产视频一区二区三区| 色综合久久久久久久久| 亚洲午夜电影在线观看| 玛丽玛丽电影原版免费观看1977 | 91在线国内视频| 欧美一级一区二区| 九九视频精品免费| 色悠悠久久综合| 亚洲成a人片综合在线| 欧美区高清在线| 亚洲欧洲色图综合| 成人免费看片网站| 久久久91精品国产一区二区精品 | 日韩欧美激情四射| 国产在线观看免费一区| 欧美亚洲另类激情小说| 日韩高清一区在线| 亚洲精品无人区| 亚洲一区二区高清| 欧洲一区二区日韩在线视频观看免费| 国产精品久久网站| 91美女福利视频| 久久午夜羞羞影院免费观看| 成人黄色网址在线观看| 日韩精品在线一区二区| 国产精品 欧美精品| 91精品国产综合久久国产大片| 精品亚洲porn| 欧美日本不卡视频| 国产一区二区美女诱惑| 3atv在线一区二区三区| 国产精品1024久久| 欧美一区二区黄| 成人一区二区三区视频| 欧美一级二级三级蜜桃| 成人一区二区在线观看| 欧美电影免费提供在线观看| 成人黄色免费短视频| 精品久久久久久久久久久久包黑料 | 国产成人精品一区二区三区福利| 国产日韩精品一区| 国产成人精品一区二区三区福利 | 日本亚洲天堂网| 在线看国产一区二区| 久久99国产精品久久99| 欧美另类一区二区三区| 国产电影一区二区三区| 日韩欧美国产一二三区| 99综合影院在线| 日本一区免费视频| 韩国成人动漫在线观看| 一区二区在线免费观看| 亚洲国产精品一区二区第一页| 午夜国产不卡在线观看视频| 色悠悠亚洲一区二区| 紧缚奴在线一区二区三区| 欧美一区二区三区视频在线| www.日韩在线| 国产精品丝袜黑色高跟| 欧美日韩亚洲在线| 日精品一区二区三区| 欧美日韩三级在线| 成人免费毛片片v| 国产人成亚洲第一网站在线播放| 国产九色精品| 一区二区三区在线视频观看58| 一区二区免费在线视频| 精品一区二区三区在线播放视频 | 成人视屏免费看| 国产日产欧美一区| 欧美日韩国产综合视频在线| 视频一区二区中文字幕| 91精品办公室少妇高潮对白| 国产一区二区日韩精品| 久久久久国产精品麻豆ai换脸| 国产在线一区二区三区欧美| 亚洲精品乱码久久久久久黑人 | 日韩精品国产精品| 884aa四虎影成人精品一区| 91欧美一区二区| 亚洲三级电影全部在线观看高清| 在线不卡日本| 国产成人一区二区精品非洲| 国产欧美精品一区二区色综合| 久久综合一区| 蓝色福利精品导航| 久久影院视频免费| 欧美亚洲另类在线一区二区三区 | 在线精品视频小说1| 成人黄色电影在线| 亚洲日本成人在线观看| 在线观看成人免费视频| 91小视频在线免费看| 一区二区三区高清在线| 欧美年轻男男videosbes| 3d精品h动漫啪啪一区二区 | 国产精品一区久久久久| 欧美国产日本视频| 宅男av一区二区三区| 不卡一二三区首页| 亚洲一区在线观看免费 | 亚洲激情五月婷婷| 欧美美女直播网站| 国产精品一区视频| 日韩av一区二区在线影视| 精品国产免费人成电影在线观看四季 | 国产午夜亚洲精品不卡| 影音先锋亚洲视频| 99久久婷婷国产| 亚洲一级不卡视频| 欧美本精品男人aⅴ天堂| 欧美精品免费观看二区| 国产剧情一区二区三区| 亚洲欧洲av一区二区三区久久| 色综合天天综合狠狠| 91丨porny丨首页| 午夜国产不卡在线观看视频| 精品99999| 一区二区三区四区| 91一区二区在线| 日韩 欧美一区二区三区| 国产午夜三级一区二区三| 色综合天天性综合| 国产福利久久| 老鸭窝一区二区久久精品| 国产精品区一区二区三| 欧美三级韩国三级日本三斤| 极品尤物一区二区三区| 国产精品18久久久久久久网站| 亚洲美女免费在线| 精品国产百合女同互慰| 一本色道a无线码一区v| 国产精品一码二码三码在线|