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

题目是,二叉树最大的宽度!这个做过,但因为不是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))
相关推荐
SamDeepThinking2 分钟前
学数据结构到底有什么用
java·后端·面试
闲人xyz16 分钟前
01|把一次用户请求做成可持续执行的回合:主循环才是 Agent 的骨架
算法·面试
程序员清风19 分钟前
独立开发者必看:推荐几个可直接用的开源项目!
java·后端·面试
落魄江湖行28 分钟前
基础篇三 一行 new String(“hello“) 到底创建了几个对象?90% 的人答错了
java·面试·八股文
青衫码上行31 分钟前
【从零开始学习JVM】栈中存的是指针还是对象 + 堆分为哪几部分
java·jvm·学习·面试
前端缘梦39 分钟前
深入理解React Fiber架构:渲染流程与双缓冲机制全解析
前端·react.js·面试
Ruihong44 分钟前
Vue v-slot → 用 VuReact 转换后变成这样的 React 代码
vue.js·react.js·面试
Ruihong44 分钟前
你的 Vue v-model,VuReact 会编译成什么样的 React 代码?
vue.js·react.js·面试
Chengbei111 小时前
2026护网HVV面试看这篇就够了!真题+技巧+培训福利一站式get
网络·安全·web安全·网络安全·面试·职场和发展·安全架构
xiaoxue..2 小时前
react:浅聊 vdom 与 diff 算法
前端·javascript·react.js·面试