每一棵子树的左孩子和右孩子都发生了交换。既然是“每一棵子树”,那么就意味着重复,既然涉及了重复,就没有理由不用递归。
解题思路
以递归的方式,遍历树中的每一个结点,并将每一个结点的左右孩子进行交换。
/**
* @param {TreeNode} root
* @return {TreeNode}
*/
const invertTree = function(root) {
// 定义递归边界
if(!root) {
return root;
}
// 递归交换右孩子的子结点
let right = invertTree(root.right);
// 递归交换左孩子的子结点
let left = invertTree(root.left);
// 交换当前遍历到的两个左右孩子结点
root.left = right;
root.right = left;
return root;
};