题目:
题解
把左右节点看成很平常的两个值交换就好,你可以理解交换两个数,左右子树递归调用,最后返回,递归先左还是先右无所谓都行。
代码
public TreeNode invertTree(TreeNode root) {
//递归函数的终止条件,节点为空时返回
if (root == null) {
return null;
}
//下面三句是将当前节点的左右子树交换
TreeNode tmp = root.right;
root.right = root.left;
root.left = tmp;
//递归交换当前节点的 左子树
invertTree(root.left);
//递归交换当前节点的 右子树
invertTree(root.right);
//函数返回时就表示当前这个节点,以及它的左右子树
//都已经交换完了
return root;
}
备注
本文正在参与「掘金 2021 春招闯关活动」, 点击查看。