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

嘉兴哪家公司做网站比较好的离婚协议书正规模板

嘉兴哪家公司做网站比较好的,离婚协议书正规模板,织梦模板免费,html5新增标签力扣日记#xff1a;【二叉树篇】合并二叉树 日期#xff1a;2023.12.18 参考#xff1a;代码随想录、力扣 617. 合并二叉树 题目描述 难度#xff1a;简单 给你两棵二叉树#xff1a; root1 和 root2 。 想象一下#xff0c;当你将其中一棵覆盖到另一棵之上时#xf…力扣日记【二叉树篇】合并二叉树 日期2023.12.18 参考代码随想录、力扣 617. 合并二叉树 题目描述 难度简单 给你两棵二叉树 root1 和 root2 。 想象一下当你将其中一棵覆盖到另一棵之上时两棵树上的一些节点将会重叠而另一些不会。你需要将这两棵树合并成一棵新二叉树。合并的规则是如果两个节点重叠那么将这两个节点的值相加作为合并后节点的新值否则不为 null 的节点将直接作为新二叉树的节点。 返回合并后的二叉树。 注意: 合并过程必须从两个树的根节点开始。 示例 1 输入root1 [1,3,2,5], root2 [2,1,3,null,4,null,7] 输出[3,4,5,5,4,null,7] 示例 2 输入root1 [1], root2 [1,2] 输出[2,2] 提示 两棵树中的节点数目在范围 [0, 2000] 内-10^4 Node.val 10^4 题解 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/ class Solution { #define SOLUTION 2 public: #if SOLUTION 1 TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {if (root1 nullptr root2 nullptr) return nullptr;if (root2 nullptr) {return root1;}if (root1 nullptr) {return root2;}traversal(root1, root2);return root1;}void traversal(TreeNode* root1, TreeNode* root2) {// 把root1当作合并后的树root1-val root1-val root2-val;// 如果root1没有左节点、root2有if (root1-left nullptr root2-left ! nullptr) {// 将root2的左子树作为root1的左子树root1-left root2-left;} // 如果都有左节点(注意这里不能用if要用else if, 因为可能本来没有左节点经过上面的if语句就有了)else if (root1-left ! nullptr root2-left ! nullptr) {// 对左子树进行递归traversal(root1-left, root2-left);}// 如果root1没有右节点、root2有if (root1-right nullptr root2-right ! nullptr) {// 将root2的右子树作为root1的右子树root1-right root2-right;}// 如果都有右节点(注意这里不能用if要用else if, 因为可能本来没有右节点经过上面的if语句就有了)else if (root1-right ! nullptr root2-right ! nullptr) {traversal(root1-right, root2-right);}// 如果是root2-left或root2-right为空则不需要处理} #elif SOLUTION 2 // 代码随想录ver// 输入参数为两树的根节点返回值为合并后的节点(在tree1上进行修改)TreeNode* mergeTrees(TreeNode* root1, TreeNode* root2) {// 如果 root1 为空返回 root2if (root1 nullptr) return root2;// 如果 root2 为空返回 root1if (root2 nullptr) return root1;// 如果两者不为空// 中root1-val root2-val;// 递归处理左子树的情况(将tree1左子树与tree2左子树合并并返回合并后的左子树作为root1的左子树)root1-left mergeTrees(root1-left, root2-left);// 递归处理右子树的情况root1-right mergeTrees(root1-right, root2-right);return root1;} #endif };复杂度 时间复杂度 空间复杂度 思路总结 我的思路 写的时候好晕绕半天本题还是得从父节点的角度去处理子节点看两个根节点是否有左右节点这里将 root1 作为合并二叉树需要处理①root1没有左节点而root2有左节点 或者 root1、root2都有左节点②root1没有右节点而root2有右节点 或者 root1、root2都有右节点 这些情况对于root1有左(右)节点而root2没有则不需处理注意 if-else if 在本题需要放在恰当的位置先用 if-else if 处理好左节点情况即①、再以相同的方式处理右节点情况即② 代码随想录的思路 看了代码随想录的解法感觉自己的思路真是放屁这才是真正用了合并左右子树的递归啊(我的是单纯递归处理两个根节点去了)同样是在左树的基础上修改这里将合并子树的根节点在每次递归返回对于终止条件 如果 root1 为空此时合并后的树的 root 为 root2返回隐含了对 root2 为空的处理此时返回null)如果 root2 为空此时合并后的树的 root 为 root1返回隐含了对 root1 为空的处理此时返回null 如果都不为空进入递归逻辑前序遍历 中对 左根节点的值进行修改左将 tree1和tree2的左子树合并后的根节点作为左数的左节点右将 tree1和tree2的右子树合并后的根节点作为左数的右节点最终返回合并后的左数根节点root1 迭代 使用队列模拟层序遍历迭代法中一般一起操作两个树都是使用队列模拟类似层序遍历同时处理两个树的节点// TODO
http://www.zqtcl.cn/news/770445/

相关文章:

  • 广西网站建设推荐wordpress 宣布停止
  • 专注网站制作青岛景观设计公司排名
  • 安庆做网站网站代理建设网站观澜
  • 网站开发需求收集 模板cms做门户网站
  • dw网站首页的导航怎么做有大佬给个网址吗
  • 一个网站怎么做聚合洛可可设计公司贾伟
  • 什么是优化型网站网页设计作业在线网站首页
  • 关于网站建设广告词英文案例网站
  • 有哪些可以做策划方案的网站国家域名
  • vk网站做婚介做seo排名好的网站
  • 广州企业网站建设公司苏州建网站提
  • html如何做购物网站天元建设集团有限公司法人代表
  • 教育培训机构排名seo是搜索引擎营销
  • 做奢侈品网站有哪些沧州手机建站哪家好
  • 德州网站网站建设广西房管局官网
  • 白石桥做网站公司seo顾问服务四川
  • 网站建设注册哪类商标十大网页设计公司
  • 网站建设的源代码有什么作用金华网站建设优化技术
  • 个人网站申请做瞹瞹嗳视频网站在线观看
  • 做网站 融资玉石网站建设的定位
  • 自己做的网站字体变成方框seo同行网站
  • 宁波网站建设培训微信小程序开发平台官网
  • 西部数码做的网站打不开哈尔滨模板建站推荐
  • 外贸网站建设流程杭州软件定制开发
  • 网站的首页面设计软文推广特点
  • 网站描述在哪里写网页设计图片怎么换
  • 深圳网站关键词优化推广做mod游戏下载网站
  • 通达oa 做网站wordpress动转换标签别名
  • 三亚学做网站培训招聘网站排名
  • 企业网站建设费用需要多少钱怎样下载建设银行信用卡网站