首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

剑指offer | 面试题25:从上到下打印二叉树

算法流程: 特例处理: 根节点为,则直接返回空列表 [] ; 初始化: 打印结果列表 res = [] ,包含根节点队列 queue = [root] ; BFS 循环: 队列 queue...为跳出; 出队: 队首元素出队,记为 node; 打印: 将 node.val 添加至列表 tmp 尾部; 添加节点: 若 node 左(右)节点不为,则将左(右)节点加入队列 queue...空间复杂度 O(N) :最差情况下,即树为平衡二叉树,最多有 N/2 个树节点同时在 queue 中,使用 O(N) 大小额外空间。...* poll 移除并问队列头部元素 如果队列为,则返回null * peek 返回队列头部元素 如果队列为,则返回null * put 添加一个元素 如果队列满,则阻塞 * take 移除并返回队列头部元素...*/ public int[] levelOrder(TreeNode root) { if (root == null) return new int[0];//树则返回空数组

81930

每日一题:LeetCode-102.二叉树层序遍历

每日一题系列(day 03) 前言:    如果说代码有灵魂,那么它灵魂一定是算法,因此,想要写出优美的程序,核心算法是必不可少,少年,你渴望力量吗,想掌握程序灵魂吗❓❗️...每一层二维数组都代表每一层节点遍历结果。 1、首先,节点为时候我们直接返回空二维数组。...4、for循环内,取队头元素,将队头元素值压入本层一维数组中,处理的当前节点,如果当前节点有节点,就把下一层节点入队,用来下次遍历,最后再将当前已经处理完了节点pop出队列。...== NULL) vector> ans;//根据题目要求创建一个二维数组 return vector>();//节点为直接返回空二维数组即可...2、进入到深搜,如果节点为的话直接返回。本层层数与二维数组存储一维数组数量相等,表示已经处理到当前层数了,这个时候在二维数组当前层数(下标)插入一个一维数组。

7410
您找到你想要的搜索结果了吗?
是的
没有找到

通过 Laravel 查询构建器实现复杂查询语句

使用该方法,需要注意传递给 whereIn 第二个参数不能是数组,否则会报错。 同样,与之相对,还有一个 whereNotIn 方法,表示与 whereIn 相反查询条件。...null查询 NULL 查询就是判断某个字段是否为查询,Laravel 查询构建器为我们提供了 whereNull 方法用于实现该查询: DB::table('users')->whereNull(...WHERE 查询也可以使用查询,对应方法是 whereSub,但是查询效率不如连接查询高,所以我们下面来探讨连接查询在查询构建器中使用。...某行在另一表中没有匹配行,则另一表中列返回空值,如 select * from posts p full join users u on p.user_id = u.id 交叉连接:也称笛卡尔积,不带...posts 记录,所以会出现某些 posts 记录为结果: ?

29.9K20

RuntimeException: Unable to boot ApiServiceProvider, configure an API domain or prefix 解决办法和原因所在

php laravel 背景描述 项目使用laravel5.3,公司新招了个学妹写前端,于是我觉得应该改变一下项目结构,我负责写api,她渲染界面,使用ajax动态无刷新,前后端分离。...默认情况下,用户仅能够修改以 PHP_ 开头环境变量(例如 PHP_FOO=BAR)。 注意:如果此指令是,PHP允许用户设定任意环境变量!...PHP是线程安全时候,putenv()和getenv()存在一个问题:如果在一个请求结束之前调用另一个请求,那么第一个脚本完成,它环境变量将被重置。...这对于Ajax请求来说是有问题,或者仅仅是当用户在新标签中打开多个链接。 下面我以laravel为例重现此问题。...接下来在学妹电脑上(ts)演示,同样操作细节,结果却返回空

42630

【数据库SQL server】关系型数据库基本知识

关系 定义: D1×D2×…×Dn子集叫作在域D1,D2,…,Dn上关系,表示为 R(D1,D2,…,Dn) R:关系名,n:关系目或度 n=1,称该关系为一元关系...n=2,称该关系为二元关系 相关概念 元组:关系中每个元素 候选码:若关系中某一属性组值能唯一地标识一个元组 全码:所有属性组是这个关系模式候选码 主码:若一个关系有多个候选码,则选定其中一个为主码...、稳定 关系是关系模式在某一状态或内容,是动态、随时间不断变化 2....关系完整性 三类完整性约束: 实体完整性:键值唯一不为 示例: 选修(学号,课程号,成绩) “学号、课程号”为主码,则“学号”和“课程号”两个属性都不能取值 参照完整性:定义外码与主码使用规则...这是一场独特学习冒险,从基本概念到算法实现,逐步揭示更深层次模式分析、匹配算法和智能模式识别的奥秘。渴望挑战数据库SQL Server中模式匹配学习路径和掌握信息领域技术?

12910

带你一步步用php实现redis分布式、高并发库存问题

开始正文, 有任何疑问都可以在评论区留言,以laravel5.8框架为基础来编写业务逻辑。 普通减库存(使用redis简单模拟减库存操作) 并发用户在同一间点到达步骤4(获取库存值)得到同一库存值并进行库存减一操作即会引起超卖现象。 加锁 用setnx命令,给当前活动加一把锁(value的话,这里的话,我们暂且设置为1)。 步骤3加锁如果执行setnx返回1,说明lockKey不存在,获取锁成功;返回结果为0,说明lockKey已经存在,获取锁失败。...> 目前并发情况下还有一些问题,某个进程执行时间大于锁过期时间,进行延时。 可以在加锁时候开一个进程去监控 主进程是否完成,未完成则给主进程延时,目前未实现代码。...laravel 常用一些例子总结 在laravel中使用redis分布式锁例一<?php $lockKey = 'lockKey'...

1.3K10

Laravel MySQL 异常宕机时强制返回空数据

业务常规查询逻辑如下: 从redis中获取数据, 有则返回 第一步redis无数据, 去MySQL查询数据 把第二步查询到数据写入redis 返回数据 问题分析 redis当然不会有问题, 问题是在第二步时候...MySQL宕机强制缓存数据到redis,允许部分页面为.而不是无法提供服务 解决思路 设置好合理MySQL连接超时时间 mysqlnd.net_read_timeout = 3 数据库连接超时之后...try { return parent::get($columns); } catch (\Exception $e) { // 根据 laravel...])) { // 记录日志, 通知xxx // Log::error($e); // 强制返回空集合...throw $e; } } } 之后需要重点监控日志报错, 来确定页面为是运营配置问题还是数据库异常问题

11510

Laravel源码解析之Cookie

Cookie来读取Cookie值: Cookie::get('name', '');//第二个参数意思是读取不到namecookie值的话,返回空字符串 添加Cookie到响应 可以使用 响应对象...Cookie服务注册 之前在讲服务提供器文章里我们提到过,Laravel在BootStrap阶段会通过服务提供器将框架中涉及到所有服务注册到服务容器里,这样在用到具体某个服务才能从服务容器中解析出服务来...既 cookie函数在参数 name为返回一个 CookieJar对象,否则调用 CookieJar make方法返回一个 \Symfony\Component\HttpFoundation\Cookie...send方法里发送响应头将Cookie数据设置到了Http响应首部 Set-Cookie字段里,这样响应发送给浏览器后浏览器就能保存这些Cookie数据了。...Laravel中Cookie模块大致实现原理就梳理完了,希望大家看了我源码分析后能够清楚Laravel Cookie实现基本流程这样在遇到困惑或者无法通过文档找到解决方案可以通过阅读源码看看它实现机制再相应设计解决方案

2.3K50

【数据结构】链式二叉树详解

,返回0 当前节点不为且左右节点都为,说明该节点为叶节点,返回1 将左子树叶节点与右子树叶节点相加就是二叉树总共叶子结点个数 A走到B,B走到D,D左右节点都为,D是叶子结点...0,返回0 k为1,只有根节点,返回1 每次递归会使k减1,到第k层k=1,然后就开始返回,这样递归定义可以保证第k层所有个数都可以算到 当我们想要求第三层节点个数,我们找到...BTNode* ret2 = BinaryTreeFind(root->right, x); if (ret2) return ret2;//不为空就返回 return NULL; } 节点为...,返回空 节点数据为想要查找数据,返回该节点指针 递归调用,左子树中存在这个数,ret1不为,返回就是那个值,右子树同上,都没有就返回空 7、前序遍历 void BinaryTreePrevOrder...:根节点->左子树->右子树 先将根节点A打印之后,递归到左结点B,打印B,递归到B结点D,打印D,D节点为,打印N,查看右节点,也为,打印N,返回到B,查看右结点,打印E

8910

【数据结构】什么是树?

定义 树(Tree)是n(n≥0)个结点有限集.n=0称为树....在任意一颗非树中: 有且仅有一个特定称为根(Root)结点; n>1,其余结点可分为m(m>0)个互不相交有限集 ,其中每一个集合本身又是一颗树,并且称为根子树(SubTree),如下图...: 有关树定义我们还需强调两点: n>0根节点是唯一,不可能存在多个根节点. m>0,子树个数没有限制,但它们一定是互不相交.下图两个结构就不符合树定义,因为它们都有相交子树:...双亲节点或父节点:若一个节点含有节点,则这个节点称为其节点父节点; 如上图:A是B父节点. 孩子节点或节点:一个节点含有的子树根节点称为该节点节点; 如上图:B是A孩子节点....Parent(T,cur_e):若cur_e是树T中非根结点,则返回它双亲,否则返回空

6010

【day08】LeetCode(力扣)每日一刷

,直接返回空即可; 存在根节点,我们可以使用栈结构,先进后出特点,将根节点以及一路而下左孩子压栈,没有左孩子,我们就能让栈顶元素出栈,同时获取出栈节点右孩子。...//创建堆结构 Deque stack = new LinkedList(); //堆不为或二叉树节点不为...); //同时节点如栈 node = node.left; //堆节点左孩子重复操作 //左子树所有的左孩子入栈,代表遍历完左子树所有节点...n 叉树 在输入中按层序遍历进行序列化表示,每组节点由值 null 分隔(请参见示例)。...list.add(curr.val); //同时记录进集合 //将出栈节点节点按照逆序入栈,当下一次出栈,记录就是左孩子

26920

LeetCode-面试题37-序列化二叉树

BFS层序遍历,由于返回要求是String类型,所以在遍历同时加上字符串拼接即可 反序列化过程,利用一个队列按层构建二叉树,并使用index指针记录节点temp节点和右节点。...每构建一个节点,index就向右移动1位,只有当节点不为,左右节点构建才有效。...为index++会跳过值为null节点 递归: 注意:递归序列化出来序列和队列方式结果不同,递归返回列表数据更像DFS遍历结果,虽然两者序列化和反序列化方式不同,但不影响构建结果。...即怎么序列化,就怎么反序列化 初始化:res列表,index指针 序列化递归: 判断头节点是否为,为则直接返回空列表 否则开始序列化递归,序列化递归过程如下: **终止条件:**遍历到左/右节点为...为则直接返回空列表 否则开始反序列化递归,过程如下: **终止条件:**index位置为null,说明此位置是节点,index后移一位,返回None **递推:**新建Node,index指针后移指向左节点

16040

类图介绍 —— 程序员(灵魂画手)必备画图技能之一

(注意也可以用两个尖括号包裹来表示抽象,比如 —— >) 冒号前是方法名/变量名(根据有无括号区分),冒号后是返回参数/变量类型(根据有无括号区分),如果没有冒号的话表示方法返回空...(也有人通过:void表示) 2....泛化关系(你可以理解为继承) 网上标准解释: 泛化关系为 is-a 关系;两个对象之间如果可以用 is-a 来表示,就是泛化关系 。 笔者通俗解释: Mac is a 电脑,懂了吧 ?...它是描书不同类对象之间关系,通常不会随着状态变化而变化,可以理解为被关联者属于关联者一部分。...依赖关系 网上标准解释: 通常描述一个对象在运行期间会用到另一个对象关系。 笔者通俗解释: 一个对象依赖另一个对象提供服务,就是依赖关系 。

1.6K10

Laravel5.2之PHP重载(overloading)

2、当在类中定义魔术方法__get()读取未定义或不可见属性就触发__get()方法: class Person { private $sex; public function...3、当在类中定义魔术方法__isset()对未定义或不可见属性调用isset()或empty()方法,就会先触发__isset()魔术方法: class Person { private...4、同样,魔术方法__unset()使用unset()方法触发: class Person { private $sex; public function __set($name,...Laravel中方法重载使用 在使用LaravelFacade这种模式,是通过Facade帮我们代理从容器Container中取出所需要服务Service,就不需要通过$app['config']...总之,多多使用Laravel来做一些东西和多多学习Laravel源码并模仿之,也是一件有趣事情。

3.1K31

Laravel jwt 多表(多用户端)验证隔离实现

# JWT 多表验证隔离 为什么要做隔离 同一个 laravel 项目有多端(移动端、管理端……)都需要使用 jwt 做用户验证,如果用户表有多个(一般都会有),就需要做 token 隔离,...会引发这个问题原因是 laravel jwt token 默认只会存储数据表主键值,并没有区分是那个表。所以只要 token 里携带 ID 在你用户表中都存在,就会导致越权验证。...我们来看看 laravel jwt token 原貌: { "iss": "http://your-request-url", "iat": 1558668215, "exp": 1645068215...这个 token 通过你验证中间件,你使用不同 guard 就能拿到对应表 id 为 1 用户(了解 guard 请查看 laravel 文档)。...jwt 声明中自定义键值对数组,这里返回空数组,没有添加任何自定义信息。

2K31
领券