程序员面试金典 - 面试题 04.09. 二叉搜索树序列(双端队列+回溯)**

1. 题目

从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。
给定一个由不同节点组成的二叉树,输出所有可能生成此树的数组。

示例:
给定如下二叉树2/ \1   3
返回:[[2,1,3],[2,3,1]
]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bst-sequences-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

类似题目:
LeetCode 95. 不同的二叉搜索树 II(递归)
LeetCode 96. 不同的二叉搜索树(DP)

  • 参考大佬的解法

在这里插入图片描述

可能的序列
[[0,1,2,3,4],[0,1,2,4,3],[0,1,3,4,2],[0,1,3,2,4],
[0,1,4,2,3],[0,1,4,3,2],[0,2,1,3,4],[0,2,1,4,3]]
class Solution {vector<vector<int>> ans;vector<int> temp;deque<TreeNode*> q;
public:vector<vector<int>> BSTSequences(TreeNode* root) {if(!root)return {{}};q.push_back(root);dfs();return ans;}void dfs(){if(q.empty()){ans.push_back(temp);return;}int size = q.size();while(size--)//这层有几个人{TreeNode *tp = q.front();q.pop_front();	//队列,第一个人出队temp.push_back(tp->val);int children = 0;if(tp->left)//把下层加入队列{q.push_back(tp->left);children++;}if(tp->right){q.push_back(tp->right);children++;}dfs();while(children--)q.pop_back();//把下层的删除q.push_back(tp);//第一个人去队尾temp.pop_back();}}
};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/476659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在央企做程序员是种什么体验?

源 | 程序厨今天在秀哥那里看到了这篇文章&#xff0c;个人感觉对一些想要进入央企的同学&#xff0c;有一些帮助&#xff0c;大家可以看一下&#xff0c;以下为正文。朋友校招加入了某垄断央企&#xff0c;在里面从事研发工程师的工作&#xff0c;下面将分享一些入职后的一些心…

pthread_create函数阻塞了主线程_5个状态,Python 中线程的生命周期

编 程 的 朝 圣 之 路----------------------------------------当程序中包含多个线程时&#xff0c;CPU 不是一直被特定的线程霸占&#xff0c;而是轮流执行各个线程。那么&#xff0c;CPU 在轮换执行线程的过程中&#xff0c;即从创建到消亡的整个过程&#xff0c;可能会历经…

ASP.NET AJAX入门系列(3):使用ScriptManagerProxy控件

在ASP.NET AJAX中&#xff0c;由于一个ASPX页面上只能有一个ScriptManager控件&#xff0c;所以在有母版页的情况下&#xff0c;如果需要在Master-Page和Content-Page中需要引入不同的脚本时&#xff0c;这就需要在Content-page中使用ScriptManagerProxy&#xff0c;而不是Scri…

程序员面试金典 - 面试题 16.04. 井字游戏(计数)

1. 题目 设计一个算法&#xff0c;判断玩家是否赢了井字游戏。输入是一个 N x N 的数组棋盘&#xff0c;由字符" "&#xff0c;“X"和"O"组成&#xff0c;其中字符” "代表一个空位。 以下是井字游戏的规则&#xff1a; 玩家轮流将字符放入空…

pygame render怎么显示中文_Pygame游戏——贪吃蛇(完结)

我们的贪吃蛇游戏基本功能已经实现&#xff0c;可以完成吃食物&#xff0c;吃到食物变长&#xff0c;得分增加&#xff0c;食物再次随机出现。但是我们有发现贪吃蛇可以穿到屏幕外面去&#xff0c;这显然是不合适的。这一次我们需要完善的是&#xff1a;游戏结束游戏结束后重新…

程序员面试金典 - 面试题 17.18. 最短超串(双指针+哈希)

1. 题目 假设你有两个数组&#xff0c;一个长一个短&#xff0c;短的元素均不相同。 找到长数组中包含短数组所有的元素的最短子数组&#xff0c;其出现顺序无关紧要。 返回最短子数组的左端点和右端点&#xff0c;如有多个满足条件的子数组&#xff0c;返回左端点最小的一个…

Symbian中不能跨越线程(RThread)使用的对象/组件(RSocket/Memery Heap,etc)

在Symbian C的编程中&#xff0c;出现一很多与Windows/linux用法与概念不同的东西。 首先&#xff0c;在Symbian中不建议多线程&#xff0c;因为线程的开销&#xff0c;也因为线程之间有很多东西不能传递与共享&#xff08;虽然同一进程中不同线程也是在同一个地址空间中&#…

Diffusion卷向视频,谷歌CEO劈柴亲自“带货”

源&#xff5c;机器之心编&#xff5c;张倩、杜伟谷歌、Meta 等科技巨头又挖了一个新坑。在文本转图像上卷了大半年之后&#xff0c;Meta、谷歌等科技巨头又将目光投向了一个新的战场&#xff1a;文本转视频。上周&#xff0c;Meta 公布了一个能够生成高质量短视频的工具——Ma…

pmp知识点详解-项目大牛整理_PMP核心知识点—第四章:项目整合管理(一)

文章来源&#xff1a;科科过PMP作者&#xff1a;科科过PMP由知乎号“慧翔天地PMP”推荐如有侵权请联系小编看到后第一时间处理一、制定项目章程1Inputs⑴商业文件→商业论证&#xff1a;①记录项目目标以及项目对目标的贡献②决定项目的期望结果是否值得所需投资③包含商业需求…

程序员面试金典 - 面试题 17.15. 最长单词(排序+递归)

1. 题目 给定一组单词words&#xff0c;编写一个程序&#xff0c;找出其中的最长单词&#xff0c;且该单词由这组单词中的其他单词组合而成。 若有多个长度相同的结果&#xff0c;返回其中字典序最小的一项&#xff0c;若没有符合要求的单词则返回空字符串。 示例&#xff1a…

.net 2.0 制作 柱状图

最近项目需要用到图表,饼图,柱状图&#xff0c;这些都很常用&#xff0c;在网上找了下&#xff0c;不是自已要的&#xff0c;只好自已动手做个,先做了个柱状图,先看下效果图代码有详解下载代码 此代码在winform环境下编译通过,要用在web环境也简单&#xff0c;只需将Graphics对…

不卷大厂了,78位高校青年教师晒出工资

源&#xff5c;青塔人才综合自知乎、小红书今天&#xff0c;小编给大家搜罗了江苏、浙江、上海、广东、山东、北京、福建、广西、云南、陕西、川渝、中部、东北地区78位高校教师的薪资待遇&#xff0c;欢迎转发分享&#xff5e;江苏常四荒&#xff1a;普通高校&#xff0c;讲师…

牛客练习赛61 - A - 打怪

题目描述 你是一个勇士&#xff0c;现在你准备去森林刷毛球怪&#xff0c;你有两个属性&#xff08;血量&#xff0c;攻击力&#xff09;&#xff0c;毛球怪也有这两个属性。 当你遭遇一只毛球怪时你们会进入战斗&#xff0c;然后你和毛球怪轮流攻击&#xff08;你先手&#x…

javascript 的参数有长度限制吗?一个细节引起的误区

一个普通的javascrip函数&#xff0c;只有一个入口参数 function test(info) ... { alert(info); } 页面用是aspx代码生成&#xff0c;调用test函数的入口参数可能是一个很长的字符串&#xff0c;同时页面上根据一个数据集构造很多如下所示的标签。 < a href " jav…

CCF列表更新引热议:ICLR未上榜,NAACL等级上升

编 | 卖萌酱2021年1月&#xff0c;CCF决定启动新一轮中国计算机学会推荐国际学术会议和期刊目录&#xff08;一下简称《目录》&#xff09;调整工作并委托CCF学术工作委员会组织实施。经过前期的充分讨论和论证后&#xff0c;于2021年9月开始正式向各专委会征集调整建议。期间由…

centos mysql jar 驱动包_JDBC连接MySQL的数据库

JDBC连接MySQL的数据库开发工具&#xff1a;eclipes数据库&#xff1a;mysql 5.6jdk&#xff1a;1.8目的&#xff1a;通过简单示例&#xff0c;教会大家如何通过java的代码实现的MySQL的数据库访问。访问数据库&#xff1a;首先要加载数据库的驱动程序(只需要在第一次访问数据库…

牛客练习赛61 - B - 吃水果

题目描述 最近米咔买了n个苹果和m个香蕉&#xff0c;他每天可以选择吃掉一个苹果和一个香蕉&#xff08;必须都吃一个&#xff0c;即如果其中一种水果的数量为0&#xff0c;则他不能进行这个操作&#xff09;&#xff0c;或者使用魔法将某一种水果的数量翻倍。 现在米咔想吃西…

SQL Server中的数据类型详解

(1)char、varchar、text和nchar、nvarchar、ntextchar 和varchar的长度都在1到8000之间&#xff0c;它们的区别在于char是定长字符数据&#xff0c;而varchar是变长字符数据。所谓定长就是长度固定的&#xff0c;当输入的数据长度没有达到指定的长度时将自动以英文空格在其后面…

java定时器只执行一次_面试阿里P6,却被MySQL难倒,二战阿里,挤进天猫团队(Java岗)...

爱因斯坦说过“耐心和恒心总会得到报酬的”&#xff0c;我也一直把这句话当做自己的座右铭&#xff0c;这句箴言在今年也彻底在我身上实现了。每一个程序员都拥有一座大厂梦&#xff0c;我也不例外&#xff0c;去年面试阿里P6&#xff0c;竟然被MySQL问倒了&#xff0c;很多相关…

推荐一个动漫风格转换的开源项目!可在线运行

文 | 超神经源 | HyperAIAnimeGANv2 最近发布了一项更新&#xff0c;由社区贡献者开发&#xff0c;通过 Gradio 实现了一个可以在线运行的 Demo&#xff0c;发布在 huggingface 上。访问链接&#xff1a;https://huggingface.co/spaces/akhaliq/AnimeGANv2即可在线上轻松实现 A…