题目要求如下:
这个题目的思路其实很简单,就是当我们遇到一个节点时,将它的左右孩子交换位置,那么我们可以用递归的思想来做。
上代码,中间有注释:
class Solution {
public:
TreeNode* invertTree(TreeNode* root) {
//递归翻转每个节点的左右子树
//终止条件
if(root == nullptr) return root;
//单次逻辑
swap(root->left, root->right); //交换左右孩子
invertTree(root->left); //这里两条递归语句其实可以交换位置,不影响最终结果
invertTree(root->right);
return root;
}
};
因为笔者是初练算法题,所以每道题掌握的解法比较单一,翻转二叉树还可以用迭代的方式来解决,感兴趣的读者可以自行探索。