题解 | #动物牛树#

动物牛树

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。

全部评论

相关推荐

我也曾抱有希望:说的好直白
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务