题解 | #动物牛树#

动物牛树

https://www.nowcoder.com/practice/b1062d1a8e784e02b25dfd52f2f07546

import java.util.*;

/*
 * public class TreeNode {
 *   int val = 0;
 *   TreeNode left = null;
 *   TreeNode right = null;
 *   public TreeNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param root TreeNode类
     * @return bool布尔型
     */
    public boolean isBalanced (TreeNode root) {
        // write code here
        if (root == null) {
            return true; // 空树是动物牛树
        }

        int leftDepth = depth(root.left);
        int rightDepth = depth(root.right);

        // 判断左右子树的深度差是否超过1,如果超过1则返回false
        if (Math.abs(leftDepth - rightDepth) > 1) {
            return false;
        }

        // 递归判断左右子树是否都是动物牛树
        return isBalanced(root.left) && isBalanced(root.right);
    }

    // 计算树的深度
    private int depth(TreeNode root) {
        if (root == null) {
            return 0;
        }
        return 1 + Math.max(depth(root.left), depth(root.right));
    }

}

这个代码使用递归方式来遍历二叉树的节点,并计算每个节点的左右子树的深度,然后判断深度差是否超过1。如果深度差不超过1,并且左右子树都是动物牛树,那么这棵树就是动物牛树。在示例中,输入 {1,2,3,#,#,4,5} 会返回 true,因为这棵树是动物牛树,而输入 {1,2,3} 也会返回 true,而输入 {1,#,2,#,3,#,4} 会返回 false,因为深度差超过了1。

全部评论

相关推荐

废物一个0offer:认真的吗二本本科找人工智能岗位
点赞 评论 收藏
分享
看到这个内容真是闹麻了。。。。。。现在有了AI以后很多人面试都会作弊吗? 那对老老实实面试的人岂不是不公平....
重生之我要干前端:放宽心,作弊很明显的,面试官也不是傻子,而且这世上更多的肯定是依靠自己的知识的人,所以放宽心提升自己最重要
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务