翻转二叉树 LeetCode 226|刷题打卡

71 阅读1分钟

题目:

题解

把左右节点看成很平常的两个值交换就好,你可以理解交换两个数,左右子树递归调用,最后返回,递归先左还是先右无所谓都行。

代码

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 春招闯关活动」, 点击查看