翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
解法:
/**
* Definition for a binary tree node.
* public class TreeNode {
* public var val: Int
* public var left: TreeNode?
* public var right: TreeNode?
* public init(_ val: Int) {
* self.val = val
* self.left = nil
* self.right = nil
* }
* }
*/
class Solution {
func invertTree(_ root: TreeNode?) -> TreeNode? {
//递归结束条件
if(root == nil || (root!.right == nil && root!.left == nil)) {
return root;
}
//临时变量记录左右节点地址
var left:TreeNode? = nil
var right:TreeNode? = nil
if ((root?.left) != nil) {
left = root!.left!;
}
if ((root?.right) != nil) {
right = root!.right!;
}
//交换左右节点
root!.right = invertTree(left);
root!.left = invertTree(right);
return root;
}
}