leetcode114 二叉樹展開為鍊錶

2021-09-12 09:16:57 字數 804 閱讀 2720

給定乙個二叉樹,原地將它展開為鍊錶。

先把左右展開,右放左最後,左放右,左置空:

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

flatten

(self, root: treenode)

->

none

:"""

do not return anything, modify root in-place instead.

"""ifnot root:

return

none

# 先把左右展開,在把右放到左最後,再把左放右,最後左置空

self.flatten(root.left)

self.flatten(root.right)

if root.left:

left, right = root.left, root.right

while left.right:

left = left.right

left.right = right

root.right = root.left

root.left =

none

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 ...

leetcode 114 二叉樹展開為鍊錶

給定乙個二叉樹,原地將它展開為鍊錶。例如,給定二叉樹 1 2 5 3 4 6將其展開為 1 2 3 4 5 6無腦版 前序遍歷二叉樹,然後再依次展開。時間複雜度是o n o n o n 空間複雜度也是o n 別人的思路 如果乙個節點有左子樹,就把右子樹掛到左子樹最右邊的節點右子樹上。時間複雜度同上,...