226 翻轉二叉樹

2021-10-05 22:35:22 字數 2078 閱讀 6642

翻轉一棵二叉樹。

示例:輸入:

4
/

2 7/ \ /

1 3 6 9

輸出:

4
/

7 2/ \ /

9 6 3 1

備註:這個問題是受到 max howell 的 原問題 啟發的 :

谷歌:我們90%的工程師使用您編寫的軟體(homebrew),但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

inverttree

(self, root: treenode)

-> treenode:

ifnot root:

return

l=root.left

r=root.right

root.left=r

root.right=l

if root.left:

self.inverttree(root.left)

if root.right:

self.inverttree(root.right)

return root

其實就是隨便遍歷一下樹結構,把左右節點換一下就好了

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

inverttree

(self, root: treenode)

-> treenode:

ifnot root:

return

satck=

[root]

while satck:

node=satck.pop(

) l=node.left

r=node.right

node.left=r

node.right=l

if node.left:

if node.right:

return root

用棧來實現一下

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

inverttree

(self, root: treenode)

-> treenode:

ifnot root:

return

queue=

[root]

while queue:

node=queue.pop(0)

l=node.left

r=node.right

node.left=r

node.right=l

if node.left:

if node.right:

return root

佇列實現層序遍歷

226 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 4 2 7 1 3 6 9 輸出 4 7 2 9 6 3 1 備註 這個問題是受到 max howell 的 原問題 啟發的 谷歌 我們90 的工程師使用您編寫的軟體 homebrew 但是您卻無法在面試時在白板上寫出翻轉二叉樹這道題,這太糟糕了。class soluti...

226 翻轉二叉樹

解題思路 看到題目就會想到要左右節點交換,但是糾結了很久的問題是在遞迴左右節點時要不要判斷左右節點為空,後來看了別人的解題思路想到了,其實不用判斷,不管是否為空都要左右節點交換。至於root為空時,root.left是否合理的問題,更不用考慮了,因為root.left是通過別的值儲存起來的,且roo...

226 翻轉二叉樹

翻轉一棵二叉樹。示例 輸入 輸出 翻轉一顆空樹還是空樹,因此,對於每乙個節點,分別翻轉它的子樹,把該節點的左右子樹交換,遞迴的翻轉所有節點。definition for a binary tree node.struct treenode class solution treenode left i...