LeetCode 114 二叉樹展開為鍊錶

2022-03-26 04:45:54 字數 1438 閱讀 1907

difficulty:中等

給定乙個二叉樹,將它展開為乙個單鏈表。

例如,給定二叉樹

1

/ \2 5

/ \ \

3 4 6

將其展開為:

1

\ 2\3

\4\5

\6

solution

language:全部題目

右左根序遍歷(rld),這個遞迴的過程比較難理解,英文區有乙個使用者畫出了rld遍歷的過程,可以參考一下。

1

/ \2 5

/ \ \

3 4 6

-----------

pre = 5

cur = 41/

2

/ \

3 4\5

\6

-----------

pre = 4

cur = 31/

2

/

3 \

4 \5\

6-----------

cur = 2

pre = 31/

2 \3

\4\5

\6

-----------

cur = 1

pre = 21 \

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

class solution:

prev = none

def flatten(self, root: treenode) -> none:

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

"""if not root: return

# rld(右左根序遍歷)

self.flatten(root.right)

self.flatten(root.left)

root.right = self.prev

root.left = none

self.prev = root

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