leetcode二叉树—226. 翻转二叉树

226. 翻转二叉树

image.png

1. 总结

二叉树的操作均是在遍历的基础上进行的。

五分钟玩转面试考点-数据结构-二叉树的遍历(人之路径,根之输出)

image.png

选择一个合适合适的遍历方式:后序遍历!

后序遍历完成时,可以拿到左右子树的引用,以及root节点引用,可以快速完成左右子树的翻转。

public class TreeNode {
    int val;
    TreeNode left;
    TreeNode right;

    TreeNode() {
    }

    TreeNode(int val) {
        this.val = val;
    }

    TreeNode(int val, TreeNode left, TreeNode right) {
        this.val = val;
        this.left = left;
        this.right = right;
    }
}

class Solution {
    /**
     * 1. 后续遍历
     *
     * 解答成功:
     * 执行耗时:0 ms,击败了100.00% 的Java用户
     * 内存消耗:35.8 MB,击败了67.97% 的Java用户
     */
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return root;
        }
        //获取两个节点
        TreeNode leftNode = invertTree(root.left);
        TreeNode rightNode = invertTree(root.right);

        //反转逻辑
        root.left = rightNode;
        root.right = leftNode;

        return root;
    }

}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容