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

力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷)

這篇具有很好參考價(jià)值的文章主要介紹了力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

題目鏈接

題目1:

力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷),算法題,leetcode,算法
思路:較簡(jiǎn)單的思路,就是先將左孩子全部入棧,然后出棧訪問右孩子,右孩子為空,再出棧,不為空,右孩子入棧,然后再次循環(huán)訪問左孩子。

/**
 * 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:
    vector<int> preorderTraversal(TreeNode* root) {
        vector<int> v;
        if(root == nullptr)
            return v;
        TreeNode* cur = root;
        stack<TreeNode*> st;
        while(cur || !st.empty())
        {
            //左孩子全部入棧
            while(cur)
            {
                v.push_back(cur->val); //入棧同時(shí)訪問
                st.push(cur);
                cur = cur->left;
            }
            cur = st.top();//開始訪問棧里面的右孩子   
            st.pop();   
            cur = cur->right;
        }
        return v;
    }
};

題目鏈接
題目2:

力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷),算法題,leetcode,算法
思路:同前序遍歷一樣,只不過訪問結(jié)點(diǎn),改為出棧時(shí)訪問。

/**
 * 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:
    vector<int> inorderTraversal(TreeNode* root) {
        //1.結(jié)點(diǎn)的左孩子先入棧
        //2.入完了之后,出棧訪問,在訪問右子樹
        //3.重復(fù)2,3 直到棧為空
        stack<TreeNode*> st;
        vector<int> v;
        if(root == nullptr)
        {
            return v;
        }

        TreeNode* cur = root;
        while(cur || !st.empty())
        {
            while(cur)
            {
                st.push(cur);
                cur = cur->left;
            }
            
            cur = st.top();  //出棧訪問
            v.push_back(cur->val);
            st.pop();
            
            cur = cur->right;
        }
        return v;

    }
};

題目3鏈接
題目3:
力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷),算法題,leetcode,算法
思路1:同樣跟前面兩種方法類似。首先保證左子樹全部入棧。區(qū)別不同的是,后序遍歷,是要經(jīng)過兩次根結(jié)點(diǎn)的,那么什么時(shí)候訪問呢?獲取棧頂元素,然后看該結(jié)點(diǎn)的右孩子是否為空,或者右孩子是不是已經(jīng)訪問過。否則就繼續(xù)將右子樹入棧。

/**
 * 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:
    vector<int> postorderTraversal(TreeNode* root) {
        
        vector<int> v;
        if(root==nullptr)
        {
            return v;
        }
        TreeNode * cur = root;
        stack<TreeNode*> st;
        TreeNode* prev = nullptr;
        while(cur || !st.empty())
        {
            //左路結(jié)點(diǎn)入棧
            while(cur)
            {
                st.push(cur);
                cur = cur->left;
            }
            
            TreeNode* top = st.top();  //記錄左路結(jié)點(diǎn),左路節(jié)點(diǎn)的左子樹已經(jīng)訪問完了
            //1.右為空,直接訪問該結(jié)點(diǎn)。右為空,右子樹已經(jīng)訪問完了,可以訪問該結(jié)點(diǎn)了。
            if(top->right == nullptr || top->right == prev)
            {
                v.push_back(top->val);
                st.pop();
                prev = top;
            }
            else
            {
                cur = top->right;   //訪問左路節(jié)點(diǎn)的右子樹  -- 子問題
            }
        }
        return v;
    }
};

思路2:先序遍歷是根左右。后序遍歷是左右根。
那么先序遍歷成根右左,再轉(zhuǎn)換就是左右根。(這就轉(zhuǎn)換成了后序遍歷的結(jié)果了)文章來源地址http://www.zghlxwxcb.cn/news/detail-803477.html

到了這里,關(guān)于力扣(144. 二叉樹的前序遍歷&&94.二叉樹的中序遍歷&&145. 二叉樹的后序遍歷)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 二叉樹的前序遍歷(力扣144)

    二叉樹的前序遍歷(力扣144)

    目錄 題目描述: 解法一:遞歸法 解法二:迭代法 解法三:Morris 遍歷 二叉樹的前序遍歷 給你二叉樹的根節(jié)點(diǎn)? root ?,返回它節(jié)點(diǎn)值的? 前序 ? 遍歷。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 樹中節(jié)點(diǎn)數(shù)目在范圍? [0, 100] ?內(nèi) -100 = Node.val = 100 復(fù)雜度分析 時(shí)間復(fù)

    2023年04月17日
    瀏覽(20)
  • LeetCode 144. 94. 145. 二叉樹的前序,中序,后續(xù)遍歷(詳解) ? ?)?*??

    LeetCode 144. 94. 145. 二叉樹的前序,中序,后續(xù)遍歷(詳解) ? ?)?*??

    目錄 144.二叉樹的前序遍歷 一. TreeSize函數(shù)的實(shí)現(xiàn): 二.?preOrderTree函數(shù)的實(shí)現(xiàn): 三.preorderTraversal函數(shù)的實(shí)現(xiàn): ?最后完整代碼: 94.二叉樹的中序遍歷: ?145.二叉樹的后續(xù)遍歷: 經(jīng)過前面的二叉樹的學(xué)習(xí),現(xiàn)在讓我們實(shí)操來練練手~如果對(duì)二叉樹還不熟悉的小伙伴可以看看我的

    2024年01月22日
    瀏覽(52)
  • 144.二叉樹的前序遍歷

    2024年01月22日
    瀏覽(22)
  • Leetcode 144. 二叉樹的前序遍歷

    Leetcode 144. 二叉樹的前序遍歷

    題目鏈接:https://leetcode.cn/problems/binary-tree-preorder-traversal/description/

    2024年02月15日
    瀏覽(25)
  • 144. 二叉樹的前序遍歷-C++

    144. 二叉樹的前序遍歷-C++

    題目來源:力扣 示例 1: 示例 2: 代碼實(shí)現(xiàn): ?思路: 我們用這棵樹來舉例 ? 我們?cè)谠L問一棵樹,按照前序遍歷,我們最先訪問的是左路節(jié)點(diǎn),也就是8,3,1,所以我們就可以把樹分為兩個(gè)部分,一個(gè)是左路節(jié)點(diǎn),另一個(gè)就是左路節(jié)點(diǎn)的右子樹,我們把左路節(jié)點(diǎn)入棧 然后我

    2024年02月11日
    瀏覽(22)
  • 【LeetCode】144.二叉樹的前序遍歷

    【LeetCode】144.二叉樹的前序遍歷

    示例 1: 輸入:root = [1,null,2,3] 輸出:[1,2,3] 示例 2: 輸入:root = [] 輸出:[] 示例 3: 輸入:root = [1] 輸出:[1] 示例 4: 輸入:root = [1,2] 輸出:[1,2] 示例 5: 輸入:root = [1,null,2] 輸出:[1,2] 提示 : 樹中節(jié)點(diǎn)數(shù)目在范圍 [0, 100] 內(nèi) -100 = Node.val = 100 中序遍歷的規(guī)則是 根-左-右,

    2023年04月24日
    瀏覽(18)
  • LeetCode.144. 二叉樹的前序遍歷

    LeetCode.144. 二叉樹的前序遍歷

    144. 二叉樹的前序遍歷 這道題目是比較基礎(chǔ)的題目,我們首先要知道二叉樹的前序遍歷是什么? 就是【 根 左 右 】 的順序,然后利用遞歸的思想,就可以得到這道題的答案,任何的遞歸都可以采用 棧 的結(jié)構(gòu)來實(shí)現(xiàn),所以我會(huì)寫兩種方式來解決這道題目。 遞歸版本 非遞歸版

    2024年02月19日
    瀏覽(28)
  • 【Leetcode -101.對(duì)稱二叉樹 -144.二叉樹的前序遍歷】

    【Leetcode -101.對(duì)稱二叉樹 -144.二叉樹的前序遍歷】

    題目:給你一個(gè)二叉樹的根節(jié)點(diǎn) root , 檢查它是否軸對(duì)稱。 示例 1: 輸入:root = [1, 2, 2, 3, 4, 4, 3] 輸出:true 示例 2: 輸入:root = [1, 2, 2, null, 3, null, 3] 輸出:false 提示: 樹中節(jié)點(diǎn)數(shù)目在范圍[1, 1000] 內(nèi) 100 = Node.val = 100 思路 :化為子問題比較左子樹和右子樹是否對(duì)稱;結(jié)束條

    2024年02月09日
    瀏覽(19)
  • 二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    二叉樹OJ題:LeetCode--144.二叉樹的前序遍歷

    朋友們、伙計(jì)們,我們又見面了,本期來給大家解讀一下LeetCode中第144道二叉樹OJ題,如果看完之后對(duì)你有一定的啟發(fā),那么請(qǐng)留下你的三連,祝大家心想事成! 數(shù)據(jù)結(jié)構(gòu)與算法專欄: 數(shù)據(jù)結(jié)構(gòu)與算法 個(gè)? 人? 主? 頁 ?: stackY、 C 語 言 專 欄 : C語言:從入門到精通 ?Leet

    2024年02月13日
    瀏覽(24)
  • 【C語言題解】 | 144. 二叉樹的前序遍歷

    【C語言題解】 | 144. 二叉樹的前序遍歷

    提示: 樹中節(jié)點(diǎn)數(shù)目在范圍 [0, 100] 內(nèi) 函數(shù)原型: 首先先觀察一下這個(gè)函數(shù)原型, TreeNode* root 為形參,傳入根節(jié)點(diǎn), int* returnSize 為形參,在函數(shù)調(diào)用時(shí)用于返回改題目所求數(shù)組的長度,因?yàn)橛捎贑語言的局限,只能返回一個(gè)參數(shù),所以采用這種通過傳入指針的形參,來改變

    2024年01月18日
    瀏覽(23)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包