LeetCode 面試題27 二叉樹的映象

2022-04-15 07:42:09 字數 1488 閱讀 4575

1、很明顯遞迴處理,交換當前節點的左右子樹,然後遞迴處理其左子樹和右子樹

2、也可以通過棧深度優先的去交換,或者通過佇列廣度優先的去交換(一層層的交換)

python

# definition for a binary tree node.

# class treenode(object):

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution(object):

def mirrortree(self, root):

""":type root: treenode

:rtype: treenode

"""if root is none:

return none

# # result = root不行, 執行到root.left時root.left=result.left=root.right

# result = treenode(root.val)

# result.left = self.mirrortree(root.right)

# result.right = self.mirrortree(root.left)

# return result

root.left, root.right = self.mirrortree(root.right), self.mirrortree(root.left)

return root

# definition for a binary tree node.

# class treenode(object):

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class solution(object):

def mirrortree(self, root):

""":type root: treenode

:rtype: treenode

"""if root is none:

return none

# 通過佇列實現

queue = [root]

while queue:

node = queue.pop()

node.left, node.right = node.right, node.left

return root

面試題27 二叉樹的映象

面試題27 二叉樹的映象 題目 操作給定的二叉樹,將其變換為源二叉樹的映象。思路 1 找到不為空的節點。2 然後交換左右節點。3 遞迴呼叫此函式 classtreenode3 publicclassno27mirror publicvoidmirror treenode3 root if root ...

面試題27 二叉樹的映象

一 題目 請完成乙個函式,輸入乙個二叉樹,該函式輸出它的映象。二 關鍵 三 解釋 1.解題思路 先前序遍歷這棵樹的所有節點,如果遍歷到的節點有子節點,就交換它的兩個子節點。當交換完所有非葉節點的左 右節點之後,就得到了樹的映象。2.尚未證明 解題思路二 直接前序遍歷,不過先遍歷右邊的,再遍歷左邊的 ...

面試題27 二叉樹的映象

題目描述 操作給定的二叉樹,將其變換為源二叉樹的映象。解題思路 先前序遍歷這棵樹的每個結點,如果遍歷到的結點有子結點,就交換它的兩個子節點,當交換完所有的非葉子結點的左右子結點之後,就得到了樹的映象 純前序遍歷的遞迴 class solution 遞迴的另一種表達方式 struct treenode...