zoom笔试

zoom笔试,二叉树那题,写个python版的,给大家参考下吧,感觉有点难度啊
# -*- coding: utf-8 -*-
"""
Created on Tue Aug  9 09:25:15 2022

@author: MI
"""


class TreeNode:
    def __init__(self, x):
        self.val = x
        self.left = None
        self.right = None


def findNode(node: int):
    res = []
    for x in q:
        if node in x:
            res.append(x[0])
            res.append(x[1])
            res.remove(node)
    return res

def preorder(node, head):
    if head.val == node:
        return head
    if head.left != None:
        return preorder(node, head.left)
    if head.right != None:
        return preorder(node, head.right)


def structTree(node: int, head: TreeNode):
    num = findNode(node)
    for x in num:
        if x in tree:
            num.remove(x)
    if len(num) == 0:
        return
    tmp = preorder(node, head)
    for x in num:
        if tmp.left == None:
            tmp.left = TreeNode(x)
            tree.append(x)
        else:
            tmp.right = TreeNode(x)
            tree.append(x)
    if len(num) > 1:
        structTree(num[0], head)
        structTree(num[1], head)
    elif len(num) == 1:
        structTree(num[0], head)


def Findpath(root, target):
    global path
    if (root == None):
        return False
    if str[root.val - 1] == 'R':
        path.append(1)
    else:
        path.append(-1)
    if (root.val == target):
        return True
    if (Findpath(root.left, target)):
        return True
    if (Findpath(root.right, target)):
        return True
    path.pop()
    return False

if __name__ == '__main__':
    n = int(input())
    str = input()
    q = []
    for i in range(n - 1):
        q.append(list(map(int, input().rstrip().split())))

    head = TreeNode(1)
    tree = []
    tree.append(1)
    structTree(1, head)

    res = []
    for x in tree:
        path = []
        Findpath(head, x)
        res.append(abs(sum(path)))

    print(sum(res))

#ZOOM笔试##zoom校招##Zoom##二叉树#
全部评论
貌似笔试都有树的题啊
点赞 回复 分享
发布于 2022-08-14 19:41
楼主能麻烦说一下题目吗?看代码看不出来在干嘛
点赞 回复 分享
发布于 2022-08-19 02:23 新加坡

相关推荐

牛客刘北:如果暑期实习是27届的话,你要晚一年才会毕业,企业为什么会等你呢?要搞清时间逻辑呀!27届现在实习只能是在暑假实习,这是日常实习,不是暑期实习。所以多去投日常实习吧,暑期实习肯定不会要你的
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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