226. Invert Binary Tree
题目大意
Given the root
of a binary tree, invert the tree, and return its root.
中文释义
给定一个二叉树的根节点 root
,翻转这棵树,并返回其根节点。
示例
示例 1:
输入: root
= [4,2,7,1,3,6,9]
输出: [4,7,2,9,6,3,1]
示例 2:
输入: root
= [2,1,3]
输出: [2,3,1]
示例 3:
输入: root
= []
输出: []
限制条件
- 树中节点的数量范围是
[0, 100]
。 -100 <= Node.val <= 100
解题思路
方法
该方法通过递归交换每个节点的左右子树来实现二叉树的翻转。
-
递归终止条件:
- 如果当前节点为
nullptr
,则返回nullptr
。
- 如果当前节点为
-
交换子树:
- 保存当前节点的左子树和右子树到临时变量
left
和right
。
- 保存当前节点的左子树和右子树到临时变量
-
递归翻转:
- 将当前节点的左子树设置为右子树的翻转结果,将右子树设置为左子树的翻转结果。
-
返回当前节点:
- 返回当前节点作为新的根节点。
代码
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
if (root == nullptr) return nullptr;
TreeNode* left = root -> left;
TreeNode* right = root -> right;
root -> left = invertTree(right);
root -> right = invertTree(left);
return root;
}
};