一、题目描述:
翻转一棵二叉树。
示例:
输入:
4
/ \
2 7
/ \ / \
1 3 6 9
输出:
4
/ \
7 2
/ \ / \
9 6 3 1
引自:leetcode-cn.com/problems/in…
题目链接:226. 翻转二叉树
二、思路分析:
- 交换根结点的左右子结点;
- 递归翻转左子树和右子树。
三、AC 代码:
class Solution {
func invertTree(_ root: TreeNode?) -> TreeNode? {
if (root == nil) {
// 空树
return root;
}
// 交换根结点的左右子孩子结点
swapLeftRightNode(root);
// 交换子结点的左右子树
invertTree(root?.left);
invertTree(root?.right);
return root;
}
//! 交换左右子结点
func swapLeftRightNode(_ node: TreeNode?) {
var tempNode : TreeNode? = node?.left;
node?.left = node?.right;
node?.right = tempNode;
}
}
四、参考学习网址
本文正在参与「掘金 3 月闯关活动」, 点击查看 活动详情