給定乙個二叉樹,原地將它展開為乙個單鏈表。
例如,給定二叉樹
解題思路:將二叉樹化為鍊錶就是把二叉樹變為只有右子樹的二叉樹。而按照這樣的思路,我們用遞迴很快就可以完成。
如果存在左子樹,把右子樹保留,右子樹置換成左子樹,左子樹置空
找到該樹的最終節點,即最右節點,再鏈結開始保留的右子樹,即根節點
class
solution
:def
flatten
(self, root: treenode)
->
none:if
not root:
return
self.flatten(root.left)
self.flatten(root.right)
if root.left:
tmp = root.right
root.right = root.left
root.left =
none
node = root.right
while node.right:
node = node.right
node.right = tmp
二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 將其展開為 以根節點為基準,先處理左子樹,然後處理右子樹,當其左右子樹均轉化為鍊錶之後,再處理以該根節點所代表的樹,將其右子樹賦給臨時變數,設root.right root.left,並將左子樹置空,然後將臨時變數賦給root.right。pub...
二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6 將其展開為 1 2 3 4 5 6解法1 前序遍歷,1.先儲存舊的右子樹,2.把左子樹賦值給root.right,把左子樹置為nil 3.遍歷找到最右邊的節點,把舊的右子樹接到最右邊的葉子節點上 4.根節點處理完成,向下遞...
二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6 解法解法一 1.對樹進行先序遍歷,把每遍歷乙個節點就將該節點入隊 2.遍歷完之後,對佇列進行出隊操作 3.每齣乙個節點,就將該節點的left指標置為null,右指標指向下乙個出隊的節點 d...