目錄
一、題目內容
二、解題思路
三、**
給定乙個二叉樹,原地將它展開為乙個單鏈表。
例如,給定二叉樹後序遍歷,右->左->根,右子樹變成對應左子樹的右子樹,然後新的左子樹變成左子樹父親的右子樹。1
/ \2 5
/ \ \
3 4 6
將其展開為:
1\2
\3\4
\5\6
# 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
def __repr__(self):
return str(self.val)
class solution:
def flatten(self, root: treenode) -> none:
"""do not return anything, modify root in-place instead.
"""self.last = none
def dfs(root):
if not root:
return none
dfs(root.right)
dfs(root.left)
root.right = self.last
root.left = none
self.last = root
return dfs(root)
if __name__ == '__main__':
a = treenode(1)
a.left = treenode(2)
a.right = treenode(5)
a.left.left = treenode(3)
a.left.right = treenode(4)
a.right.right = treenode(6)
s = solution()
ans = s.flatten(a)
print(ans)
leetcode114 二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。先把左右展開,右放左最後,左放右,左置空 definition for a binary tree node.class treenode def init self,x self.val x self.left none self.right none clas...
Leetcode 114 二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6 複製 將其展開為 1 2 3 4 5 6 複製 這算是比較經典的一道題目了,博主面試快手的時候原題。最開始一想,覺得遞迴的求解不就好了,但是遞迴的時候發現需要注意乙個地方就是 需要先遞迴右子樹,然後記錄下右子樹展開完成之後...
leetcode 114 二叉樹展開為鍊錶
給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6採用二叉樹後序遍歷 python 如下 class treenode object def init self,x self.val x self.left none self.right ...