摘要:思路這題相當(dāng)于是當(dāng)?shù)臅r候,關(guān)鍵是要知道要被連接的的前面的一個這樣才可以把接上。用一路做到底,當(dāng)做到的時候,左邊返回右邊也返回,這時返回自己成為同樣接著繼續(xù)做。
Flatten Binary Tree to Linked List
Divide-ConquerFlatten 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.
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
摘要:題目要求將一棵二叉樹展開形成一棵鏈表形狀的樹。本質(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...
摘要:棧法復(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...
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 ...
摘要:在線網(wǎng)站地址我的微信公眾號完整題目列表從年月日起,每天更新一題,順序從易到難,目前已更新個題。這是項(xiàng)目地址歡迎一起交流學(xué)習(xí)。 這篇文章記錄我練習(xí)的 LeetCode 題目,語言 JavaScript。 在線網(wǎng)站:https://cattle.w3fun.com GitHub 地址:https://github.com/swpuLeo/ca...我的微信公眾號: showImg(htt...
摘要:月下半旬攻略道題,目前已攻略題。目前簡單難度攻略已經(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ū)別...
閱讀 3030·2021-11-22 09:34
閱讀 2506·2021-09-30 09:47
閱讀 1439·2021-09-03 10:32
閱讀 3704·2021-08-16 10:49
閱讀 1784·2019-08-30 15:55
閱讀 2451·2019-08-30 15:52
閱讀 3316·2019-08-30 15:44
閱讀 1344·2019-08-30 15:44