LeetCode 623. 在二叉树中增加一行(BFS/DFS)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 BFS
      • 2.2 DFS

1. 题目

给定一个二叉树,根节点为第1层,深度为 1。在其第 d 层追加一行值为 v 的节点。

添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为 v 的左子树和右子树。

将 N 原先的左子树,连接为新节点 v 的左子树;将 N 原先的右子树,连接为新节点 v 的右子树。

如果 d 的值为 1,深度 d - 1 不存在,则创建一个新的根节点 v,原先的整棵树将作为 v 的左子树。

示例 1:
输入: 
二叉树如下所示:4/   \2     6/ \   / 3   1 5   v = 1
d = 2输出: 4/ \1   1/     \2       6/ \     / 3   1   5   示例 2:
输入: 
二叉树如下所示:4/   2    / \   3   1    v = 1
d = 3输出: 4/   2/ \    1   1/     \  
3       1
注意:
输入的深度值 d 的范围是:[1,二叉树最大深度 + 1]。
输入的二叉树至少有一个节点。

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

2. 解题

2.1 BFS

用队列按层遍历,到达指定的层,在层间加入新的节点,再将新节点与上下层连接起来

class Solution {
public:TreeNode* addOneRow(TreeNode* root, int v, int d) {if(d == 1){TreeNode *newRoot = new TreeNode(v);newRoot->left = root;return newRoot;}int deep = 1, n;queue<TreeNode*> q;TreeNode *tp, *l, *r;q.push(root);while(!q.empty() && deep < d){n = q.size();while(n--){tp = q.front();q.pop();if(deep == d-1)	//到达指定的层了{l = tp->left;//存储下层节点leftr= tp->right;//存储下层节点righttp->left = new TreeNode(v);//新节点tp->right = new TreeNode(v);tp->left->left = l;//新节点与下层连接上tp->right->right = r;}if(tp->left)q.push(tp->left);if(tp->right)q.push(tp->right);}deep++;}return root;}
};

在这里插入图片描述

2.2 DFS

class Solution {
public:TreeNode* addOneRow(TreeNode* root, int v, int d) {if(d == 1){TreeNode *newRoot = new TreeNode(v);newRoot->left = root;return newRoot;}dfs(root,1,d,v);return root;}void dfs(TreeNode* root, int deep, int &d, int &v){if(!root || deep == d)return;if(deep == d-1){TreeNode* l = root->left;TreeNode* r = root->right;root->left = new TreeNode(v);root->right = new TreeNode(v);root->left->left = l;root->right->right = r;}dfs(root->left,deep+1,d,v);dfs(root->right,deep+1,d,v);}
};

在这里插入图片描述

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

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

相关文章

论文浅尝 | KR-GCN: 知识感知推理的可解释推荐系统

论文作者&#xff1a;马婷&#xff0c;中国科学院信息工程研究所直博生动机抽取并利用知识图谱(KG)中的多跳关系路径可以提高推荐系统的性能&#xff0c;并提供可解释性。然而&#xff0c;现有的工作仍面临着两个主要的挑战&#xff1a;用户偏好的错误传播和模型的弱解释性。提…

吴恩达,确诊新冠阳性!

编 | 好困 袁榭源 | 新智元【导读】当代人工智能领域最权威的学者之一吴恩达&#xff0c;于2022年2月8日晨在自己推特上宣布新冠检测结果阳性&#xff0c;不过症状轻微。北京时间&#xff0c;2022年2月8日早上6点&#xff0c;吴恩达新冠病毒检测呈阳性。吴恩达表示&#xff0c;…

Spring Cloud Config采用Git存储时两种常用的配置策略

由于Spring Cloud Config默认采用了Git存储&#xff0c;相信很多团队在使用Spring Cloud的配置中心时也会采用这样的策略。即便大家都使用了Git存储&#xff0c;可能还有各种不同的配置方式&#xff0c;本文就来介绍一下两种常用的配置策略。 第一种&#xff1a;多个项目公用一…

图谱实战 | 城市大脑知识图谱构建及应用研究

转载公众号 | 专知随着城市大脑建设进程的推进,城市中积累了大量的物联网(IoT)设备和数据,利用海量设备数据对问题 进行分析和溯源,对于城市大脑建设具有重要意义。该文基于资源描述框架和智能物联网协议概念,提出一种以城市物联网本体为基础的城市大脑知识图谱建设方法,城市大…

震惊!三个万引大佬嘴仗,原来是为了他……?

文&#xff5c;白鹡鸰想把小轶挂到三作编&#xff5c;小轶已把白鹡鸰挂到三作这本应是白鹡鸰在小轶追杀下游刃有余拖稿的一天&#xff0c;结果小轶再次把一篇新论文喂到了我的嘴边。象征性地打开论文&#xff0c;草草扫过去&#xff0c;嗯&#xff0c;迁移学习&#xff0c;嗯&a…

LeetCode 611. 有效三角形的个数(双指针)

1. 题目 给定一个包含非负整数的数组&#xff0c;你的任务是统计其中可以组成三角形三条边的三元组个数。 示例 1: 输入: [2,2,3,4] 输出: 3 解释: 有效的组合是: 2,3,4 (使用第一个 2) 2,3,4 (使用第二个 2) 2,2,3注意: 数组长度不超过1000。 数组里整数的范围为 [0, 1000]…

Eureka 2.0 开源流产,真的对你影响很大吗?

最近连续发烧四天&#xff0c;偶尔刷两下朋友圈都能看到好几条来自不同号的关于《Eureka 2.0开源工作宣告停止&#xff0c;继续使用风险自负》的推文。主要内容如下&#xff1a; 近日&#xff0c;知名服务注册与服务发现工具 Eureka 的 GitHub Wiki 上显示其 2.0 版本的开源工作…

会议交流 | 知识图谱开源开放及生态——7月12日TF65

转载公众号 | 中国计算机学会本期会议邀请到来自阿里巴巴等头部企业的代表&#xff0c;以及来自北京大学、南京大学和浙江大学的研究人员&#xff0c;一起深入探讨开放知识图谱、知识图谱开源工具等所面临的机遇和挑战&#xff0c;并进一步了解知识图谱开放和开源工具构建的应用…

LeetCode 650. 只有两个键的键盘(DP)

1. 题目 最初在一个记事本上只有一个字符 ‘A’。你每次可以对这个记事本进行两种操作&#xff1a; Copy All (复制全部) : 你可以复制这个记事本中的所有字符(部分的复制是不允许的)。Paste (粘贴) : 你可以粘贴你上一次复制的字符。 给定一个数字 n 。你需要使用最少的操作…

10个开源工业检测数据集汇总

本文转载自公众号“夕小瑶的卖萌屋”&#xff0c;专业带逛互联网算法圈的神操作 -----》我是传送门 关注后&#xff0c;回复以下口令&#xff1a; 回复【789】 &#xff1a;领取深度学习全栈手册&#xff08;含NLP、CV海量综述、必刷论文解读&#xff09; 回复【入群】&#xf…

Hystrix降级逻辑中如何获取触发的异常

通过之前Spring Cloud系列教程中的《Spring Cloud构建微服务架构&#xff1a;服务容错保护&#xff08;Hystrix服务降级&#xff09;》一文&#xff0c;我们已经知道如何通过Hystrix来保护自己的服务不被外部依赖方拖垮的情况。但是实际使用过程中经常碰到开发反应“莫名”触发…

大厂生存36计

本文授权转载自公众号“算法圈的小破事”&#xff0c;点击以上卡片进行关注大家好&#xff0c;我是在互联网危险边缘疯狂试探的皮皮虾。互联网大厂就像一座围城&#xff0c;外面人想进去&#xff0c;里面的人想出去。里面的人说又累又不好混&#xff0c;外面的人觉得里面的人舒…

开源开放 | 多模态地球科学知识图谱GAKG

OpenKG地址&#xff1a;http://openkg.cn/dataset/gakg网站地址&#xff1a;https://gakg.acemap.info/论文地址&#xff1a;https://dl.acm.org/doi/10.1145/3459637.3482003开放许可协议&#xff1a;CC BY-SA 4.0 &#xff08;署名相似共享&#xff09;贡献者&#xff1a;王新…

LeetCode 468. 验证IP地址

1. 题目 编写一个函数来验证输入的字符串是否是有效的 IPv4 或 IPv6 地址。 IPv4 地址由十进制数和点来表示&#xff0c;每个地址包含4个十进制数&#xff0c;其范围为 0 - 255&#xff0c; 用(".")分割。比如&#xff0c;172.16.254.1&#xff1b; 同时&#xff…

Spring Cloud Config采用数据库存储配置内容【Edgware+】

在之前的《Spring Cloud构建微服务架构&#xff1a;分布式配置中心》一文中&#xff0c;我们介绍的Spring Cloud Server配置中心采用了Git的方式进行配置信息存储。这一设计巧妙的利用Git自身机制以及其他具有丰富功能的Git服务端产品&#xff0c;让Spring Cloud Server在配置存…

颤抖吧,打工人!深信服推出员工离职倾向、工作摸鱼监测系统!

文 | 金磊 杨净&#xff08;发自凹非寺&#xff09;源 | 量子位前脚投简历&#xff0c;后脚就被精准裁员。一位网友最近就爆出了这样一段真实经历&#xff0c;而且还称被领导教育了一通&#xff1a;别以为你上班干啥我都不知道&#xff0c;你啥时候想走我都一清二楚&#xff01…

征稿 | “知识图谱赋能的知识工程:理论、技术与系统”专题投稿截止时间延长至2022年7月25日...

转载公众号 | 计算机科学编辑部征稿“知识图谱赋能的知识工程&#xff1a;理论、技术与系统”专题知识图谱&#xff08;Knowledge Graph&#xff09;方法与技术是人工智能在知识工程领域发展的最新前沿。知识图谱正在“感知智能”迈向“认知智能”的过程中扮演着重要角色。近年…

LeetCode 93. 复原IP地址(回溯)

1. 题目 给定一个只包含数字的字符串&#xff0c;复原它并返回所有可能的 IP 地址格式。 示例: 输入: "25525511135" 输出: ["255.255.11.135", "255.255.111.35"]来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;http…

为什么回归问题用MSE?

文 | Matrix.小泽直树最近在看李沐的实用机器学习课程&#xff0c;讲到regression问题的loss的时候有弹幕问&#xff1a;“为什么要平方&#xff1f;”如果是几年前学生问我这个问题&#xff0c;我会回答&#xff1a;“因为做回归的时候的我们的残差有正有负&#xff0c;取个平…

Spring Cloud Config Server迁移节点或容器化带来的问题

如果您跟我一样&#xff0c;目前正在使用Spring Cloud Config做为配置中心的话&#xff0c;本篇将来要描述的问题&#xff0c;强烈推荐了解和关注&#xff01;因为这个问题目前存在于所有的版本中&#xff0c;还没有完全修复。 问题现象 为了说明下面的内容&#xff0c;我们可…