思路——深度遍历
- 递归终止条件——结点为空 无法交换
- 递归左右子树
- 交换左右子树
- 代码优化——空孩子不必交换
代码
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
//递归终止条件
if (root == nullptr)
return nullptr;
//代码优化,空孩子不必交换
if(root->left==nullptr && root->right==nullptr)
return root;
//递归左右子树
TreeNode* left = invertTree(root->left);
TreeNode* right = invertTree(root->right);
//交换左右子树
root->left = right;
root->right = left;
return root;
}
};