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

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

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

目錄

題目描述:

解法一:遞歸法

解法二:迭代法

解法三:Morris 遍歷


二叉樹的前序遍歷

題目描述:

給你二叉樹的根節(jié)點(diǎn)?root?,返回它節(jié)點(diǎn)值的?前序?遍歷。

示例 1:

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

輸入:root = [1,null,2,3]
輸出:[1,2,3]

示例 2:

輸入:root = []
輸出:[]

示例 3:

輸入:root = [1]
輸出:[1]

示例 4:

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

輸入:root = [1,2]
輸出:[1,2]

示例 5:

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

輸入:root = [1,null,2]
輸出:[1,2]

提示:

  • 樹中節(jié)點(diǎn)數(shù)目在范圍?[0, 100]?內(nèi)
  • -100 <= Node.val <= 100

解法一:遞歸法

    List<Integer> res = new ArrayList<>();
    public List<Integer> preorderTraversal(TreeNode root) {
        if(root == null){
            return res;
        }
        res.add(root.val);
        preorderTraversal(root.left);
        preorderTraversal(root.right);
        return res;
    }

復(fù)雜度分析

  • 時(shí)間復(fù)雜度:O(n)O(n),其中 nn 是二叉樹的節(jié)點(diǎn)數(shù)。每一個(gè)節(jié)點(diǎn)恰好被遍歷一次。
  • 空間復(fù)雜度:O(n)O(n),為遞歸過程中棧的開銷,平均情況下為 O(\log n)O(logn),最壞情況下樹呈現(xiàn)鏈狀,為 O(n)O(n)。

解法二:迭代法

    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<>();
        if(root == null){
            return res;
        }
        Deque<TreeNode> stack = new ArrayDeque<>();
        stack.push(root);
        while(!stack.isEmpty()){
            TreeNode temp = stack.pop();
            res.add(temp.val);
            if(temp.right != null){
                stack.push(temp.right);
            }
            if(temp.left != null){
                stack.push(temp.left);
            }
        }
        return res;
    }

復(fù)雜度分析

  • 時(shí)間復(fù)雜度:O(n)O(n),其中 nn 是二叉樹的節(jié)點(diǎn)數(shù)。每一個(gè)節(jié)點(diǎn)恰好被遍歷一次。
  • 空間復(fù)雜度:O(n)O(n),為迭代過程中顯式棧的開銷,平均情況下為 O(\log n)O(logn),最壞情況下樹呈現(xiàn)鏈狀,為 O(n)O(n)。

解法三:Morris 遍歷

    public List<Integer> preorderTraversal(TreeNode root) {
        List<Integer> res = new ArrayList<Integer>();
        if (root == null) {
            return res;
        }

        TreeNode p1 = root, p2 = null;

        while (p1 != null) {
            p2 = p1.left;
            if (p2 != null) {
                while (p2.right != null && p2.right != p1) {
                    p2 = p2.right;
                }
                if (p2.right == null) {
                    res.add(p1.val);
                    p2.right = p1;
                    p1 = p1.left;
                    continue;
                } else {
                    p2.right = null;
                }
            } else {
                res.add(p1.val);
            }
            p1 = p1.right;
        }
        return res;
    }

復(fù)雜度分析文章來源地址http://www.zghlxwxcb.cn/news/detail-416803.html

  • 時(shí)間復(fù)雜度:O(n)O(n),其中 nn 是二叉樹的節(jié)點(diǎn)數(shù)。沒有左子樹的節(jié)點(diǎn)只被訪問一次,有左子樹的節(jié)點(diǎn)被訪問兩次。
  • 空間復(fù)雜度:O(1)O(1)。只操作已經(jīng)存在的指針(樹的空閑指針),因此只需要常數(shù)的額外空間。

到了這里,關(guān)于二叉樹的前序遍歷(力扣144)的文章就介紹完了。如果您還想了解更多內(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)文章

  • 【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ù)組的長(zhǎng)度,因?yàn)橛捎贑語言的局限,只能返回一個(gè)參數(shù),所以采用這種通過傳入指針的形參,來改變

    2024年01月18日
    瀏覽(24)
  • 算法D14 | 二叉樹1 | 144. 二叉樹的前序遍歷 145. 二叉樹的后序遍歷 94. 二叉樹的中序遍歷

    理論基礎(chǔ)? 需要了解?二叉樹的種類,存儲(chǔ)方式,遍歷方式?以及二叉樹的定義? 文章講解: 二叉樹既可以鏈?zhǔn)酱鎯?chǔ)(利用指針,類似棧和隊(duì)列),也可以用數(shù)組表示。 深度優(yōu)先遍歷 前序遍歷(遞歸法,迭代法) 中序遍歷(遞歸法,迭代法) 后序遍歷(遞歸法,迭代法)

    2024年02月20日
    瀏覽(19)
  • 【Leetcode60天帶刷】day14二叉樹——144.二叉樹的前序遍歷,145.二叉樹的后序遍歷,94.二叉樹的中序遍歷

    【Leetcode60天帶刷】day14二叉樹——144.二叉樹的前序遍歷,145.二叉樹的后序遍歷,94.二叉樹的中序遍歷

    144. 二叉樹的前序遍歷 給你二叉樹的根節(jié)點(diǎn)? root ?,返回它節(jié)點(diǎn)值的? 前序 ? 遍歷。 示例 1: 示例 2: 示例 3: 示例 4: 示例 5: 提示: 樹中節(jié)點(diǎn)數(shù)目在范圍? [0, 100] ?內(nèi) -100 = Node.val = 100 145. 二叉樹的后序遍歷 給你一棵二叉樹的根節(jié)點(diǎn)? root ?,返回其節(jié)點(diǎn)值的? 后序遍歷

    2024年02月10日
    瀏覽(33)
  • 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)
  • 算法練習(xí)第13天|遞歸實(shí)現(xiàn) 144.二叉樹的前序遍歷(opens new window)145.二叉樹的后序遍歷(opens new window)94.二叉樹的中序遍歷

    算法練習(xí)第13天|遞歸實(shí)現(xiàn) 144.二叉樹的前序遍歷(opens new window)145.二叉樹的后序遍歷(opens new window)94.二叉樹的中序遍歷

    二叉樹的存儲(chǔ)方式:鏈?zhǔn)酱鎯?chǔ)和順序存儲(chǔ)。鏈?zhǔn)酱鎯?chǔ)用指針,順序存儲(chǔ)用數(shù)組。其結(jié)構(gòu)如下圖所示。 鏈?zhǔn)酱鎯?chǔ): 順序存儲(chǔ): 順序存儲(chǔ)時(shí),若父節(jié)點(diǎn)下表為i,則其左孩子下標(biāo)為 2*i + 1,右孩子下標(biāo)為2*i + 2. 二叉樹主要有兩種遍歷方式: 深度優(yōu)先遍歷:先往深走,遇到葉子節(jié)點(diǎn)

    2024年02月22日
    瀏覽(24)
  • 【LeetCode】105. 從前序與中序遍歷序列構(gòu)造二叉樹,106. 從中序與后序遍歷序列構(gòu)造二叉樹,144. 二叉樹的前序遍歷非遞歸實(shí)現(xiàn),94. 二叉樹的中序遍歷非遞歸實(shí)現(xiàn),145. 二叉樹的后序

    【LeetCode】105. 從前序與中序遍歷序列構(gòu)造二叉樹,106. 從中序與后序遍歷序列構(gòu)造二叉樹,144. 二叉樹的前序遍歷非遞歸實(shí)現(xiàn),94. 二叉樹的中序遍歷非遞歸實(shí)現(xiàn),145. 二叉樹的后序

    給定兩個(gè)整數(shù)數(shù)組 preorder 和 inorder ,其中 preorder 是二叉樹的 先序遍歷 , inorder 是同一棵樹的 中序遍歷 ,請(qǐng)構(gòu)造二叉樹并返回其根節(jié)點(diǎn)。 示例 輸入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7] 輸出: [3,9,20,null,null,15,7] 給定兩個(gè)整數(shù)數(shù)組 inorder 和 postorder ,其中 inorder 是二叉樹的

    2024年02月04日
    瀏覽(27)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包