国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

[LeetCode] Flatten Binary Tree to Linked List

lowett / 1538人閱讀

摘要:思路這題相當(dāng)于是當(dāng)?shù)臅r候,關(guān)鍵是要知道要被連接的的前面的一個這樣才可以把接上。用一路做到底,當(dāng)做到的時候,左邊返回右邊也返回,這時返回自己成為同樣接著繼續(xù)做。

Flatten Binary Tree to Linked List

Flatten a binary tree to a fake "linked list" in pre-order traversal.
Here we use the right pointer in TreeNode as the next pointer in
ListNode.

Divide-Conquer

Time Complexity
O(n)
Space Complexity
O(logn)

思路

這題相當(dāng)于是merge two LinkedList, 當(dāng)merge linkedList的時候,關(guān)鍵是要知道要被連接的ListNode的前面的一個ListNode, 這樣才可以把Listnode.next接上。用divide-conquer一路做到底,當(dāng)做到Leaf node的時候,左邊返回Null, 右邊也返回null,這時返回自己,成為leftLast, 同樣接著繼續(xù)做rightLast。

第一種情況:if(leftLast == null && rightLast == null) return root;
第二種情況:if(leftLast != null && rightLast != null) 把左邊返回上來的半邊的LinkedList的最后一個與右邊的第一個root.right接上,return rightLast作為新的leftLast
第三種情況:if(leftLast != null && rightLast == null) 還是要做與第二種情況同樣的操作,但是返回的是leftLast
第四種情況if(leftLast == null && rightLast != null) return rightLast作為新的leftLast

所以第二種情況和第四種情況合并,但是如果rightLast != null還是要先返回rightLast

代碼
public void flatten(TreeNode root) {
    // write your code here
    //corner case
    if(root == null) return;
    helper(root);
}

private TreeNode helper(TreeNode root){
    if(root == null) return null;
    TreeNode leftLast = helper(root.left);
    TreeNode rightLast = helper(root.right);
    
    if(leftLast == null && rightLast == null) return root; //leafnode
    if(leftLast != null){
        leftLast.right = root.right;
        root.right = root.left;
        root.left = null;
    }
    if(rightLast != null) return rightLast;
    if(leftLast != null) return leftLast;
    return root;
}

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/70038.html

相關(guān)文章

  • leetcode114. Flatten Binary Tree to Linked List

    摘要:題目要求將一棵二叉樹展開形成一棵鏈表形狀的樹。本質(zhì)上是將該樹轉(zhuǎn)變成先序遍歷后的樣子。所以這個例題一步步的操作如下代碼如下思路二遞歸其實(shí)這里的思路等價于反轉(zhuǎn)的先序遍歷。自底向上深度優(yōu)先遍歷,這要求將前序遍歷的頭結(jié)點(diǎn)通過臨時變量保存一下。 題目要求 Given a binary tree, flatten it to a linked list in-place. For example...

    zhjx922 評論0 收藏0
  • [Leetcode] Flatten Binary Tree to Linked List 整平二叉

    摘要:棧法復(fù)雜度時間空間思路對于一個根節(jié)點(diǎn),我們將它的右子樹壓進(jìn)一個棧中,然后將它的左子樹放到右邊來。如果該節(jié)點(diǎn)沒有左子樹,說明該節(jié)點(diǎn)是某個左子樹的最后一個節(jié)點(diǎn),我們這時候把棧中最近的右子樹出來接到它的右邊。 Flatten Binary Tree to Linked List Given a binary tree, flatten it to a linked list in-plac...

    mikyou 評論0 收藏0
  • [LintCode/LeetCode] Flatten Binary Tree to Linked

    Problem Flatten a binary tree to a fake linked list in pre-order traversal.Here we use the right pointer in TreeNode as the next pointer in ListNode. Example 1 1 ...

    TNFE 評論0 收藏0
  • 前端 | 每天一個 LeetCode

    摘要:在線網(wǎng)站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...

    張漢慶 評論0 收藏0
  • LeetCode 攻略 - 2019 年 7 月下半月匯總(100 題攻略)

    摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(jīng)到題,所以后面會調(diào)整自己,在刷算法與數(shù)據(jù)結(jié)構(gòu)的同時,攻略中等難度的題目。 Create by jsliang on 2019-07-30 16:15:37 Recently revised in 2019-07-30 17:04:20 7 月下半旬攻略 45 道題,目前已攻略 100 題。 一 目錄 不折騰的前端,和咸魚有什么區(qū)別...

    tain335 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<