leetcode 114 二叉樹展開為鍊錶

2021-10-09 16:34:00 字數 1336 閱讀 1237

目錄

一、題目內容

二、解題思路

三、**

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

例如,給定二叉樹

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