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 新加坡

相关推荐

书海为家:实习是成为大厂正式员工很好的敲门砖,看您的简历中有一段实习经历,挺好的。我来给一点点小建议,因为毕竟还在学校不像工作几年的老鸟有丰富的项目经验,面试官在面试在校生的时候更关注咱们同学的做事逻辑和思路,所以最好在简历中描述下自己实习时做过项目的完整过程,比如需求怎么来的,你对需求的解读,你想到的解决办法,遇到困难如何找人求助,最终项目做成了什么程度,你从中收获了哪些技能,你有什么感悟。
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

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