給定乙個二叉樹,原地將它展開為鍊錶。
例如,給定二叉樹
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 = none
class solution(object):
def flatten(self, root):
""":type root: treenode
:rtype: none do not return anything, modify root in-place instead.
"""if not root:
return
self.flatten(root.left)
self.flatten(root.right)
temp = root.right #儲存父節點的右子節點
root.right = root.left #將父節點的左子節點變為父節點的新右子節點
root.left = none
while root.right: #將父節點的原右子節點連線到新右子節點的右子節點上
root = root.right
root.right = temp
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無腦版 前序遍歷二叉樹,然後再依次展開。時間複雜度是o n o n o n 空間複雜度也是o n 別人的思路 如果乙個節點有左子樹,就把右子樹掛到左子樹最右邊的節點右子樹上。時間複雜度同上,...