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