国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

?LeetCode解法匯總106. 從中序與后序遍歷序列構(gòu)造二叉樹

這篇具有很好參考價(jià)值的文章主要介紹了?LeetCode解法匯總106. 從中序與后序遍歷序列構(gòu)造二叉樹。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

?目錄鏈接:

力扣編程題-解法匯總_分享+記錄-CSDN博客

GitHub同步刷題項(xiàng)目:

https://github.com/September26/java-algorithms

原題鏈接:

力扣(LeetCode)官網(wǎng) - 全球極客摯愛的技術(shù)成長平臺

描述:

給定兩個(gè)整數(shù)數(shù)組?inorder?和?postorder?,其中?inorder?是二叉樹的中序遍歷,?postorder?是同一棵樹的后序遍歷,請你構(gòu)造并返回這顆?二叉樹?。

示例 1:

?LeetCode解法匯總106. 從中序與后序遍歷序列構(gòu)造二叉樹,編程題,leetcode,算法,職場和發(fā)展

輸入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]
輸出:[3,9,20,null,null,15,7]

示例 2:

輸入:inorder = [-1], postorder = [-1]
輸出:[-1]

提示:

  • 1 <= inorder.length <= 3000
  • postorder.length == inorder.length
  • -3000 <= inorder[i], postorder[i] <= 3000
  • inorder?和?postorder?都由?不同?的值組成
  • postorder?中每一個(gè)值都在?inorder?中
  • inorder?保證是樹的中序遍歷
  • postorder?保證是樹的后序遍歷

解題思路:

1.和105題差不多,只不過后序遍歷的最后一個(gè)數(shù)字,一定是根節(jié)點(diǎn)。中序遍歷中找到這個(gè)根節(jié)點(diǎn),就可以分成左右兩份,分別對應(yīng)左子樹和右子樹。

2.所以我們使用和105題一樣的策略,唯一要改的就是傳入的區(qū)間范圍。文章來源地址http://www.zghlxwxcb.cn/news/detail-836993.html

代碼:

/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     TreeNode *left;
 *     TreeNode *right;
 *     TreeNode() : val(0), left(nullptr), right(nullptr) {}
 *     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
 *     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}
 * };
 */
class Solution {
public:
    TreeNode *buildTree(vector<int> &inorder, vector<int> &postorder)
    {
        vector<int> indexMap(6000);
        for (int i = 0; i < inorder.size(); i++)
        {
            indexMap[inorder[i] + 3000] = i;
        }
        TreeNode *node = buildNode(indexMap, postorder, inorder, 0, postorder.size() - 1, 0, inorder.size() - 1);
        return node;
    }

    TreeNode *buildNode(vector<int> &indexMap, vector<int> &postorder, vector<int> &inorder, int postStart, int postEnd, int inStart, int inEnd)
    {
        int expectValue = postorder[postEnd];
        int index = indexMap[expectValue+3000];
        int leftLength = index - inStart;
        int rightLength = inEnd - index;
        TreeNode *root = new TreeNode(expectValue);
        if (leftLength >= 1)
        {
            root->left = buildNode(indexMap, postorder, inorder, postStart, postStart + leftLength - 1, inStart, index - 1);
        }
        if (rightLength >= 1)
        {
            root->right = buildNode(indexMap, postorder, inorder, postEnd - rightLength, postEnd - 1, index + 1, inEnd);
        }
        return root;
    }
};

到了這里,關(guān)于?LeetCode解法匯總106. 從中序與后序遍歷序列構(gòu)造二叉樹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包