1.问题描述
操作给定的二叉树,将其变换为源二叉树的镜像。
输入描述:
二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5
2.思路解析
递归的交换结点的左右孩子
3.python代码
递归型:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
# write code here
if root==None:
return None
if root.left!=None:
self.Mirror(root.left)
if root.right!=None:
self.Mirror(root.right)
if root.left!=None or root.right!=None:
root.left, root.right = root.right, root.left
循环型:
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
# 返回镜像树的根节点
def Mirror(self, root):
# write code here
if root==None:
return None
nodes = []
nodes.append(root)
index = 0
while index<len(nodes):
temp = nodes[index]
if temp.left:
nodes.append(temp.left)
if temp.right:
nodes.append(temp.right)
temp.left, temp.right = temp.right, temp.left
index += 1
4.总结
面试的时候要先把自己的思考讲给面试官听,抽象的问题可以通过画图解说,说完自己的思路再开始写代码。