114. 二叉樹展開為鍊錶
想象如果左右子樹已經拉平,那所需要做的就是把左子樹連線到有右子樹的位置,同時右子樹連線到左子樹的葉子結點;
因為需要先將左右子樹拉平,因此本題需要後序遍歷。
# definition for a binary tree node.
# class treenode:
# def __init__(self, val=0, left=none, right=none):
# self.val = val
# self.left = left
# self.right = right
class
solution
:def
flatten
(self, root: treenode)
->
none
:"""
do not return anything, modify root in-place instead.
"""ifnot root:
return
left = self.flatten(root.left)
right = self.flatten(root.right)
root.left =
none
root.right = left
tmp = root
while tmp.right:
tmp = tmp.right
tmp.right = right
return root
東哥手把手帶你套框架刷通二叉樹|第一 114 二叉樹展開為鍊錶
首先是原地演算法的定義 演算法原地工作的含義是指不需要任何額外的輔助,演算法所需要的輔助空間不隨著問題的規模而變化,是乙個確定的值。通過觀察示例可以知道,我們可以猜想,大方向是前序遍歷。第一種思路 dfs。設定乙個全域性的指標 這種做法有點脫離原地演算法,因為多開闢了乙個指標變數 核心思想是拿到乙個...
114 二叉樹展開為鍊錶
一開始寫的 114 二叉樹展開為鍊錶 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none class solution def flatt...
114 二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6思路 從題目可以看出來要求先根遍歷。從根節點開始出發,先檢測其左子結點是否存在 1 找到左子結點最後面的右子節點 如果沒有,就是左子節點本身 2 將根節點和其右子節點斷開,把原右子節點連到原...