翻转一棵二叉树。
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
思路:
如果一个节点是叶子节点,则不做操作;
如果一个节点只有左孩子或者右孩子,则进行交换,原来的孩子为空;
如果一个节点既有左孩子和右孩子,则交换左右孩子。
代码:
class Solution(object):
def invertTree(self, root):
"""
:type root: TreeNode
:rtype: TreeNode
"""
# 如果是叶子节点,则递归结束
if root is None:
return
# if root.left and root.right:
root.left,root.right = root.right,root.left
self.invertTree(root.left)
self.invertTree(root.right)
return root
非递归版本(层次遍历?):