当前位置: 首页 > news >正文

网站建设app开发 微信小程序 网站开发 自动脚本义乌网图科技有限公司电话

网站建设app开发 微信小程序 网站开发 自动脚本,义乌网图科技有限公司电话,建设项目环境影响登记表备案系统网站,杭州关键词优化服务623. 在二叉树中增加一行中等给定一个二叉树的根 root 和两个整数 val 和 depth ,在给定的深度 depth 处添加一个值为 val 的节点行。注意,根节点 root 位于深度 1 。加法规则如下:给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur…

623. 在二叉树中增加一行

中等

给定一个二叉树的根 root 和两个整数 valdepth ,在给定的深度 depth 处添加一个值为 val 的节点行。

注意,根节点 root 位于深度 1

加法规则如下:

  • 给定整数 depth,对于深度为 depth - 1 的每个非空树节点 cur ,创建两个值为 val 的树节点作为 cur 的左子树根和右子树根。

  • cur 原来的左子树应该是新的左子树根的左子树。

  • cur 原来的右子树应该是新的右子树根的右子树。

  • 如果 depth == 1 意味着 depth - 1 根本没有深度,那么创建一个树节点,值 val 作为整个原始树的新根,而原始树就是新根的左子树。

示例 1:

输入: root = [4,2,6,3,1,5], val = 1, depth = 2

输出: [4,1,1,2,null,null,6,3,1,5]

示例 2:

输入: root = [4,2,null,3,1], val = 1, depth = 3

输出: [4,2,null,1,1,3,null,null,1]

题解(层序遍历+队列 求解)

  1. 因为在深度为2是添加一行就是在第二行与第一行之间添加一行节点,所以初始化一个变量为 1,记录要添加一行位置与终止循环条件

  1. 当添加的一行的左右节点为空时,且深度正好为要添加一行深度,则让该节点的左右节点都为要添加的节点

  1. 当要添加的节点左或右不为空,借助中间节点拼接树

  1. 当深度为1时让要添加的节点左子树为根节点即可。

/*** Definition for a binary tree node.* public class TreeNode {*     int val;*     TreeNode left;*     TreeNode right;*     TreeNode() {}*     TreeNode(int val) { this.val = val; }*     TreeNode(int val, TreeNode left, TreeNode right) {*         this.val = val;*         this.left = left;*         this.right = right;*     }* }*/
class Solution {public TreeNode addOneRow(TreeNode root, int val, int depth) {Queue<TreeNode> queue = new LinkedList<>();if(depth == 1){TreeNode temp = new TreeNode(val);temp.left = root;System.out.println(temp.val+" "+temp.left.val);return temp;}// TreeNode temp = new TreeNode(val);TreeNode dummy = root;queue.add(dummy);int count = 1;while (queue.size() > 0){int n = queue.size();for (int i = 0; i < n; i++) {TreeNode remove = queue.remove();if(remove.left != null){// 左子树不为空if(count == depth - 1){// 满足要添加节点深度TreeNode temp = new TreeNode(val);TreeNode t = remove.left;// 中间节点拼接remove.left = temp;temp.left = t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.left);}}else if(count == depth - 1){// 左子树为空且满足添加节点深度,直接让添加节点为该节点左子树TreeNode temp = new TreeNode(val);remove.left = temp;}if(remove.right != null){// 右子树不为空if(count == depth - 1){// 满足要添加节点深度TreeNode temp = new TreeNode(val);TreeNode t = remove.right;// 中间节点拼接remove.right = temp;temp.right = t;}else {// 不满足节点深度继续添加下一层节点queue.add(remove.right);}}else if(count == depth - 1){// 左子树为空且满足添加节点深度,直接让添加节点为该节点左子树TreeNode temp = new TreeNode(val);remove.right = temp;}}// if(count == depth){//     break;//}count++;}return dummy;}
}
http://www.yayakq.cn/news/586651/

相关文章:

  • 上海宽带网网站网站设计是平面设计吗
  • 10有免费建网站有口碑的常州网站优化
  • 怎么做外网网站监控网页拒绝了你的访问怎么解决
  • 旅游网站建设风险带积分的网站建设
  • 制作短链接网站网站建设报告实训步骤
  • 淘宝客不做网站可以做么软件推广网络营销
  • wordpress桌面宠物网站网页制作及优化
  • 什么网站可以做十万的分期主要推广手段免费
  • 个人无网站怎样做cps广告注册网站模板
  • 选择佛山顺德网站设计阿里云共享云主机做网站
  • 高中信息技术课程做网站网站建设基本流程 dns
  • 定制网站为什么贵seo投放是什么意思
  • 网站页面分辨率婚纱摄影照片
  • 常见的网络营销工具北京百度seo工作室
  • 一家专门做打折的网站河间专业做网站电话
  • 搜索引擎网站使用的排名规则wordpress本地怎么搬家
  • 一个网站的设计思路三站合一网站建设
  • 网站精神文件建设专栏雅虎搜索引擎
  • 山东建设工程执业证书查询网站六安百度公司电话
  • 大学生可以做的网站项目织梦网站如何更新系统
  • 企业手机网站建设提升用户体验的三个点没有备案号的网站
  • 淘宝客是以下哪个网站的会员简称wordpress如何应用插件下载
  • 做零售的国外网站免费申请电子邮箱
  • 做了网站应该如何推广wordpress 图片等比缩放
  • 团购网站的交易流程百度如何投放广告
  • 集群网站开发建立网站的优势
  • 泰安建设企业网站智慧团建官网登录口入口
  • 中国建设部网站-玻璃幕墙在网页做动态图片的网站
  • 设计师网站建设银行门户网站建设ppt
  • 模板网站 建设教材网站建设网站建