代码随想录刷题】Day15 二叉树02

在这里插入图片描述

文章目录

  • 1.二叉树的层次遍历
  • 2. 【226】翻转二叉树(优先掌握递归)
    • 2.1 题目描述
    • 2.2 解题思路
    • 2.3 java代码实现
  • 3. 【101】对称二叉树(优先掌握递归)
    • 3.1 题目描述
    • 3.2 解题思路
    • 3.3 java代码实现

  • 层次遍历
    【102】二叉树的层次遍历
    【107】二叉树的层次遍历II
    【199】二叉树的右视图
    【637】二叉树的层平均值
    【429】N叉树的层序遍历
    【515】在每个树行中找最大值
    【116】填充每个节点的下一个右侧节点指针
    【117】填充每个节点的下一个右侧节点指针II
    【104】二叉树的最大深度
    【111】二叉树的最小深度

【226】翻转二叉树
【101】对称二叉树

1.二叉树的层次遍历

【代码随想录刷题】一口气打10道层次遍历 打打打

2. 【226】翻转二叉树(优先掌握递归)

【226】翻转二叉树

2.1 题目描述

给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。
代码随想录刷题】Day15 二叉树02_第1张图片

2.2 解题思路

2.3 java代码实现

class Solution {
    /**
     * 前后序遍历都可以
     * 中序不行,因为先左孩子交换孩子,再根交换孩子(做完后,右孩子已经变成了原来的左孩子),
     * 再右孩子交换孩子(此时其实是对原来的左孩子做交换)
     */
    public TreeNode invertTree(TreeNode root) {
        if (root == null) {
            return null;
        }
        invertTree(root.left);
        invertTree(root.right);
        swapChildren(root);
        return root;

    }
    private void swapChildren(TreeNode root) {
        TreeNode tmp = root.left;
        root.left = root.right;
        root.right = tmp;
    }
}

3. 【101】对称二叉树(优先掌握递归)

【101】对称二叉树

3.1 题目描述

给你一个二叉树的根节点 root , 检查它是否轴对称。
代码随想录刷题】Day15 二叉树02_第2张图片

3.2 解题思路

3.3 java代码实现

class Solution {
    public boolean isSymmetric(TreeNode root) {
        return compare(root.left, root.right);
    }
    private boolean compare(TreeNode left, TreeNode right) {

        if (left == null && right != null) {
            return false;
        }
        if (left != null && right == null) {
            return false;
        }

        if (left == null && right == null) {
            return true;
        }
        if (left.val != right.val) {
            return false;
        }
        // 比较外侧
        boolean compareOutside = compare(left.left, right.right);
        // 比较内侧
        boolean compareInside = compare(left.right, right.left);
        return compareOutside && compareInside;
    }
}

你可能感兴趣的:(代码随想录刷题,数据结构,leetcode,java)