算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试。所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 !

今天和大家聊的问题叫做 在二叉树中增加一行,我们先来看题面:

https://leetcode.cn/problems/add-one-row-to-tree/

给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行。
注意,根节点 root 位于深度 1 。
加法规则如下:

给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur ,创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。
cur 原来的左子树应该是新的左子树根的左子树。
cur 原来的右子树应该是新的右子树根的右子树。
如果 depth == 1 意味着 depth - 1 根本没有深度,那么创建一个树节点,值 val 作为整个原始树的新根,而原始树就是新根的左子树。

示例

示例:MyCircularQueue circularQueue = new MyCircularQueue(3); // 设置长度为 3
circularQueue.enQueue(1);  // 返回 true
circularQueue.enQueue(2);  // 返回 true
circularQueue.enQueue(3);  // 返回 true
circularQueue.enQueue(4);  // 返回 false,队列已满
circularQueue.Rear();  // 返回 3
circularQueue.isFull();  // 返回 true
circularQueue.deQueue();  // 返回 true
circularQueue.enQueue(4);  // 返回 true
circularQueue.Rear();  // 返回 4提示:所有的值都在 0 至 1000 的范围内;
操作数将在 1 至 1000 的范围内;
请不要使用内置的队列库。

示例

解题

https://www.cnblogs.com/zhengxch/p/14924672.html

解题思路:这道题目比较直接,好像并没有什么技巧,就是在二叉树深度遍历的时候,判断当前深度是否为depth-1,如果是,那就新增两个节点,赋值为val,增加到当前节点中,当前节点原来的左子树和右子树依次作为新左节点的左子树和新右节点的右子树即可。如果当前深度不为depth-1,那就对左子节点和右子节点分别调用递归函数,递归函数的参数中,深度递增,同时进入递归函数后,要判断当前节点是否为空,若为空,说明当前分支不能添加新节点,直接返回即可。

class Solution {public TreeNode addOneRow(TreeNode root, int val, int depth) {if(depth==1){TreeNode node = new TreeNode(val);node.left = root;return node;}helper(root, 1, depth, val);return root;}public void helper(TreeNode node, int curDepth, int depth, int val){if(node==null) return;if(curDepth==depth-1){TreeNode newLeftNode = new TreeNode(val);TreeNode leftTreeRoot = node.left;node.left = newLeftNode;newLeftNode.left = leftTreeRoot;TreeNode newRightNode = new TreeNode(val);TreeNode rightTreenode = node.right;node.right = newRightNode;newRightNode.right = rightTreenode; }else{helper(node.left, curDepth+1, depth, val);helper(node.right, curDepth+1, depth, val);} }
}

上期推文:

LeetCode1-620题汇总,希望对你有点帮助!

LeetCode刷题实战621:任务调度器

LeetCode刷题实战622:设计循环队列

​LeetCode刷题实战623:在二叉树中增加一行相关推荐

  1. Java实现 LeetCode 623 在二叉树中增加一行(遍历树)

    623. 在二叉树中增加一行 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N, ...

  2. ​LeetCode刷题实战314:二叉树的竖直遍历

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  3. 图解LeetCode——623. 在二叉树中增加一行(难度:中等)

    一.题目 给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行. 注意,根节点 root 位于深度 1 . 加法规则如下: 给 ...

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

    文章目录 1. 题目 2. 解题 2.1 BFS 2.2 DFS 1. 题目 给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整 ...

  5. LeetCode——623.在二叉树中增加一行

    通过万岁!!! 题目:给你一个二叉树,然后在他的第depth层上面插入一层.插入的值是val,并且之前的左子树,还是这个插入节点的左子树,之前的右子树还是这个插入节点的右子树. 思路:层序遍历,如果到 ...

  6. 623. 在二叉树中增加一行

    给定一个二叉树,根节点为第1层,深度为 1.在其第 d 层追加一行值为 v 的节点. 添加规则:给定一个深度值 d (正整数),针对深度为 d-1 层的每一非空节点 N,为 N 创建两个值为 v 的左 ...

  7. ​LeetCode刷题实战631:设计 Excel 求和公式

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  8. ​LeetCode刷题实战546:移除盒子

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

  9. ​LeetCode刷题实战584:寻找用户推荐人

    算法的重要性,我就不多说了吧,想去大厂,就必须要经过基础知识和业务逻辑面试+算法面试.所以,为了提高大家的算法能力,这个公众号后续每天带大家做一道算法题,题目就从LeetCode上面选 ! 今天和大家 ...

最新文章

  1. iscsi发起程序找不到目标_3分钟学会程序员“面试回答规范”,不怕找不到工作的里面请...
  2. wpa_supplicant 详解(9) - 4 way handshake
  3. SpringBoot v2.2.6版本遇到的坑 --- HiddenHttpMethodFilter组件的锅
  4. Fast R-CNN《Fast R-CNN》论文笔记
  5. 【NLP】NLP中的消歧
  6. Python基础day08 作业解析【7道 面向对象题目】
  7. php获取目录中的所有文件名
  8. 创建ListView的基本步骤
  9. 从十四五规划看 物联网(NB-IoT、Cat.1、5G)将何去何从?
  10. 自动分页,返回时跳回指定页
  11. 十条不错的编程观点(转)
  12. C++字符串空格替换题
  13. 110KV降压变电所电气一次部分及防雷保护设计
  14. MySQL聚集索引与非聚集索引相关总结
  15. 伽罗华有限域_伽罗华域(Galois Field,GF,有限域)乘法运算 - MengBoy的专栏 - CSDN博客...
  16. 什么是英特尔® Edison 模块?
  17. 根据观测时间,经纬度,求太阳高度角
  18. excel提取单元格内特定字符(字/词)前(后)的内容
  19. web页面:窗口切换
  20. 最全最强解析:支付宝钱包系统架构内部剖析(架构图)

热门文章

  1. 图表控件TeeChart安装使用
  2. 直播、网红和社交网络的Social Media化
  3. PDF文件怎么编辑,如何删除其中一页
  4. Ubuntu桌面版高版本无法更新软件:Unmet Dependencies
  5. 大学计算机李凤霞课本百度云,大学计算机
  6. unity3d发布安卓出错plese set the package name
  7. C#中的NewLine到底是什么字符?
  8. 没有计算的推理和基于推理的计算 逻辑与算法之五
  9. Java实战项目《瑞吉外卖》
  10. 神经元网络技术有限公司,神经网络网站