算法day13 | Java | 二叉树 | LeetCode 110,257,404,222(未完)

74 阅读1分钟

java

求绝对值 Math.abs()

110.平衡二叉树 (优先掌握递归)

听完讲解还不懂的点,返回-1是为了标记该树不是平衡二叉树,那这个-1在递归的时候怎么传递呢?

class Solution {
    public boolean isBalanced(TreeNode root) {
        return getHeight(root)!= -1;
    }
    //听完讲解还不懂的点,返回-1是为了标记该树不是平衡二叉树,那这个-1在递归的时候怎么传递呢?
    private int getHeight(TreeNode root) {
        if(root == null) return 0;

        int leftH = getHeight(root.left);
        if(leftH == -1) return -1;

        int rightH = getHeight(root.right);
        if(rightH == -1) return -1;

        int res;
        if(Math.abs(leftH-rightH) >1) {   
            res = -1; 
        } else {
            res = Math.max(leftH,rightH)+1;
        }
        return res;
    }
    // 最基本的求root节点的深度
    // private int getHeight(TreeNode root) {
    //     if(root == null) return 0;
    //     int leftH = getHeight(root.left);
    //     int rightH = getHeight(root.right);
    //     return Math.max(leftH,rightH)+1;
    // }
}

257. 二叉树的所有路径 (优先掌握递归)

需要使用前序遍历,因为是从根节点指向别的节点

404.左叶子之和 (优先掌握递归)

222.完全二叉树的节点个数(优先掌握递归)