分析:
就是遍历+交换左右节点
递归解法:
# -*- coding:utf-8 -*-
# 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
if root.left == None and root.right == None:
return
temp = root.left
root.left = root.right
root.right = temp
if root.left:
self.Mirror(root.left)
if root.right:
self.Mirror(root.right)
或者简洁版本:
# -*- coding:utf-8 -*-
# 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
root.left, root.right = root.right, root.left
self.Mirror(root.left)
self.Mirror(root.right)
非递归版本:
# -*- coding:utf-8 -*-
# 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
st = []
st.append(root)
while len(st):
p = st[-1]
st.pop()
p.left, p.right = p.right, p.left
if p.left:
st.append(p.left)
if p.right:
st.append(p.right)