京东算法卷,逃生+还原

第一题ac了,根据输入来构建树,然后求根节点子树的最大节点个数
class TreeNode():
    def __init__(self, val):
        self.val = val
        self.next = []
N = int(input())
edgelist = []
for i in range(N-1):
    edgelist.append(list(map(int, input().split())))
Nodelist = []
for i in range(1,N+1):
    Nodelist.append(TreeNode(i))
zinode = []
for [x,y] in edgelist:
    Nodelist[y-1].next.append(Nodelist[x-1])
    if y==1:
        zinode.append(Nodelist[x-1])
def preorder(root):
    if not root:
        return []
    stack = [root]
    result = 0
    while stack:
        cur = stack.pop()
        result+=1
        if cur.next:
            cur.next.reverse()
            stack += cur.next
    return result
print(max(preorder(node) for node in zinode))
第二题没时间想了,求大佬指点一下思路。
#京东##笔试题目#
全部评论
第二题好难啊
点赞 回复 分享
发布于 2019-04-13 21:35
大佬,26行为什么要reverse()啊?
点赞 回复 分享
发布于 2019-04-14 09:13

相关推荐

评论
点赞
17
分享

创作者周榜

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