劍指offer 二叉樹的映象

2021-10-05 13:53:28 字數 1595 閱讀 6981

最開始寫的方法是從樹的底層開始左右子樹交換,然後一層層返回,每層都交換左右子樹。

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:# 返回映象樹的根節點

defmirror

(self, root)

:# write code here

if root is

none

:return

none

if root.left is

none

and root.right is

none

:return root

left =

none

right =

none

if root.left is

notnone

: left = self.mirror(root.left)

if root.right is

notnone

: right = self.mirror(root.right)

root.left = right

root.right = left

return root

然後發現別人的**都是正著寫的。。。。

都是從第1層(根的左右子樹)開始交換,一直交換到最下邊。

# -*- coding:utf-8 -*-

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:# 返回映象樹的根節點

defmirror

(self, root)

:# write code here

if root is

none

:return

;if root.left is

none

and root.right is

none

:return

;

tmp = root.left

root.left = root.right

root.right = tmp

if root.left is

notnone

: self.mirror(root.left)

if root.right is

notnone

: self.mirror(root.right)

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5 這道題目就是交換樹的左右節點之後,遞迴呼叫。不遞迴的方法我覺得可以考慮使用層次遍歷那樣的佇列式方法,不過太麻煩了吧。coding utf 8 class...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。二叉樹的映象定義 源二叉樹 8 6 10 5 7 9 11 映象二叉樹 8 10 6 11 9 7 5交換左右節點,遍歷左節點,右節點,求映象 class treenode def init self,item self.val item self.lef...

劍指offer 二叉樹映象

操作給定的二叉樹,將其變換為源二叉樹的映象。遞迴判斷是否為空 不為空交換左右子樹 左子樹呼叫 右子樹呼叫。兩種寫法 coding utf 8 class treenode def init self,x self.val x self.left none self.right none class ...