字节面试手撕中等题但还没做出来

题目是,二叉树最大的宽度!这个做过,但因为不是hot100 ,我就是做了一遍就过去了。结果今天手撕这道题。。。

刚刚试了下,超时了!好的办法是,把节点和下标(假设是满二叉树),就能解决了。

面试写的代码

python 复制代码
# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, val=0, left=None, right=None):
#         self.val = val
#         self.left = left
#         self.right = right
class Solution:
    def widthOfBinaryTree(self, root: Optional[TreeNode]) -> int:
        res = 0
        q = []
        q.append(root)
        res = max(res, len(q))
        while True:
            #res =max(res,n)# 判断这一层的宽度
            for i in range(len(q)):
                curr = q.pop(0)
                if not curr:
                    q.append(None)
                    q.append(None)
                elif not curr.left and curr.right:
                    q.append(None)
                    q.append(curr.right)
                elif curr.left and not curr.right:
                    q.append(curr.left)
                    q.append(None)
                else:
                    q.append(curr.left)
                    q.append(curr.right)
            if len(q) == 0:
                return res
            while q and not q[0]:
                q.pop(0)
            while q and not q[-1]:
                q.pop()

            res = max(res, len(q))
相关推荐
茶本无香14 分钟前
JVM调优介绍 + 面试题标准答案(高级)
java·jvm·面试
小江的记录本38 分钟前
【反射】Java反射 全方位知识体系(附 应用场景 + 《八股文常考面试题》)
java·开发语言·前端·后端·python·spring·面试
张张123y1 小时前
AI大模型应用面试:深度学习知识点汇总与面试指导
人工智能·深度学习·面试
榴莲omega1 小时前
第8天:前端面试经典五问
前端·面试·职场和发展·js八股
程序员buddha1 小时前
Java面试八股文基础篇
java·开发语言·面试
编程学习0012 小时前
记一次Java面试
java·面试
羊小猪~~2 小时前
算法/力扣--链表经典题目
数据结构·后端·考研·算法·leetcode·链表·面试
Moment2 小时前
手把手搭一套前端监控采集 SDK
前端·javascript·面试
发现一只大呆瓜15 小时前
深入浅出 AST:解密 Vite、Babel编译的底层“黑盒”
前端·面试·vite
发现一只大呆瓜15 小时前
前端模块化:CommonJS、AMD、ES Module三大规范全解析
前端·面试·vite