第二题(递增二叉树): #coding=utf-8 import sys class Node(object):     def __init__(self, x, left = None, right = None):         self.val = x         self.left = left         self.right = right def func(root):     if not root:         return "NO"     cur_level_sum, cur_level = -1, [root]     while cur_level:         cur_level_val = []         next_level = []         for node in cur_level:             cur_level_val.append(node.val)             if node.left:                 next_level.append(node.left)             if node.right:                 next_level.append(node.right)         if cur_level_sum >= sum(cur_level_val):             return "NO"         cur_level_sum = sum(cur_level_val)         cur_level = next_level     return "YES" if __name__ == "__main__":     T = int(sys.stdin.readline().strip())     for _ in range(T):         N = int(sys.stdin.readline().strip())         id_node_dict = {}         # 构建哈希表 key: 结点编号  value:结点         for i in range(N):             val, left, right = list(map(int, sys.stdin.readline().strip().split()))             id_node_dict[i] = Node(val, left, right)         # 确定根节点:         sub_tree_id = []         for id, node in id_node_dict.items():             if node.left != -1 and node.left not in sub_tree_id:                 sub_tree_id.append(node.left)             if node.right != -1 and node.right not in sub_tree_id:                 sub_tree_id.append(node.right)         root_id = sum(range(N)) - sum(sub_tree_id)         # 构建二叉树:         for id, node in id_node_dict.items():             if node.left == -1:                 node.left = None             else:                 node.left = id_node_dict[node.left]             if node.right == -1:                 node.right = None             else:                 node.right = id_node_dict[node.right]         print(func(id_node_dict[root_id]))
点赞 评论

相关推荐

杨柳哥:这不是普通人,那这个钱的是天才
点赞 评论 收藏
分享
牛客网
牛客企业服务