美文网首页
leetcode二叉树—226. 翻转二叉树

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

作者: 小胖学编程 | 来源:发表于2021-07-09 00:51 被阅读0次

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;
    }

}

相关文章

网友评论

      本文标题:leetcode二叉树—226. 翻转二叉树

      本文链接:https://www.haomeiwen.com/subject/pwntpltx.html