反转二叉树

LetCode 226

从三个结点分析.png

图中是最简单的一个二叉树,翻转后的结果是2 3 7。其中OX001,OX002,OX003仅仅代表子节点在堆内存中的真实地址。
注意,这里的地址是不会发生变化的
上代码

public class TreeNode {
    int val;
// 这里仅仅表示引用,会发生变化
    TreeNode left;
    TreeNode right;

    TreeNode(int x) {
        val = x;
    }
}

public class T1 {
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }

        TreeNode left = invertTree(root.left);
        TreeNode right = invertTree(root.right);
        root.left = right;
        root.right = left;
        return root;
    }
}
执行过程.png

从图中可以看出,只有根节点的树,翻转后不会变化。返回的是子树根节点的地址,当子树递归完之后,双亲结点的地址引用将会发生交换,也就是翻转。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容