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

网站设计制作托管维护可以查企业备案的网站

网站设计制作托管维护,可以查企业备案的网站,网络技术基础知识,个体工商户营业执照年检力扣日记#xff1a;【二叉树篇】236. 二叉树的最近公共祖先 日期#xff1a;2023.12.24 参考#xff1a;代码随想录、力扣 ps#xff1a;提前祝 平安夜快乐#xff01; 236. 二叉树的最近公共祖先 题目描述 难度#xff1a;中等 给定一个二叉树, 找到该树中两个指定节点…力扣日记【二叉树篇】236. 二叉树的最近公共祖先 日期2023.12.24 参考代码随想录、力扣 ps提前祝 平安夜快乐 236. 二叉树的最近公共祖先 题目描述 难度中等 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为“对于有根树 T 的两个节点 p、q最近公共祖先表示为一个节点 x满足 x 是 p、q 的祖先且 x 的深度尽可能大一个节点也可以是它自己的祖先。” 示例 1 输入root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 1 输出3 解释节点 5 和节点 1 的最近公共祖先是节点 3 。 示例 2 输入root [3,5,1,6,2,0,8,null,null,7,4], p 5, q 4 输出5 解释节点 5 和节点 4 的最近公共祖先是节点 5 。因为根据定义最近公共祖先节点可以为节点本身。 示例 3 输入root [1,2], p 1, q 2 输出1 提示 树中节点数目在范围 [2, 10^5] 内。-10^9 Node.val 10^9所有 Node.val 互不相同 。p ! qp 和 q 均存在于给定的二叉树中。 题解 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) : val(x), left(NULL), right(NULL) {}* };*/ class Solution { public:// 本题要找两个子节点的最近公共祖先是一个从底往上找的过程(先找到子节点才能找其祖先)// 而要从底往上查找-想到是回溯-想到二叉树遍历中的天然回溯,即后序遍历(左右中,根据左右节点的返回值处理中节点逻辑)// 且从底往上找则先找到的公共祖先一定是最近公共祖先(深度最大)// 关于如何判断一个节点是节点q和节点p的公共祖先// 第一种情况如果找到一个节点发现左子树出现结点p右子树出现节点q或者反之那么该节点就是节点p和q的最近公共祖先// 第二种情况节点本身p(q)是自己的祖先实际上在代码实现中也包含在第一种情况中// 递归参数与返回值参数为当前节点与指定节点返回值表示是否在当前节点的树中找到指定节点(或者找到公共祖先)TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {// 递归终止条件// 如果root为空节点了则没有返回空// 如果 root q或者 root p说明找到 q p 则将其返回if (root q || root p || root NULL) return root; // 如果根节点不为空或还没找到则递归处理// 左(看左子树能不能找到p或q)TreeNode* left lowestCommonAncestor(root-left, p, q);// 右(看右子树能不能找到p或q)TreeNode* right lowestCommonAncestor(root-right, p, q);// 中(对左右返回值的处理逻辑)// 如果左右不为空说明左子树返回一个右子树返回一个则当前root为公共祖先情况1if (left ! NULL right ! NULL) return root;// 如果左为空而右不为空说明右找到了一个或者直接找到公共祖先返回右包含了情况2if (left NULL right ! NULL) return right;// 反之亦然if (left ! NULL right NULL) return left;// 如果都为空,则返回空return NULL;} };复杂度 时间复杂度 空间复杂度 思路总结 本题想了想没有思路www直接看的代码随想录的… 首先明确祖先的概念一个节点是 以该节点为根节点的树上的所有节点的祖先关于最近公共祖先的概念则为题目所述 本题思路实际上是代码注释 本题要找两个子节点的最近公共祖先是一个从底往上找的过程(先找到子节点才能找其祖先)而要从底往上查找-想到是回溯-想到二叉树遍历中的天然回溯,即后序遍历(左右中,根据左右节点的返回值处理中节点逻辑)且从底往上找则先找到的公共祖先一定是最近公共祖先(深度最大)关于如何判断一个节点是节点q和节点p的公共祖先 第一种情况如果找到一个节点发现左子树出现结点p右子树出现节点q或者反之那么该节点就是节点p和q的最近公共祖先 第二种情况节点本身p(q)是自己的祖先实际上在代码实现中也包含在第一种情况中 递归的三部曲 递归参数与返回值参数为当前节点与指定节点返回值表示是否在当前节点的树中找到指定节点(或者找到公共祖先)递归终止条件 如果root为空节点了则没有返回空如果 root q或者 root p说明找到 q p 则将其返回 递归处理逻辑 如果根节点不为空或还没找到则递归处理左(看左子树能不能找到p或q)右(看右子树能不能找到p或q)中(对左右返回值的处理逻辑) 如果左右不为空说明左子树返回一个右子树返回一个则当前root为公共祖先对应情况1如果左为空而右不为空说明右找到了一个或者直接找到公共祖先返回右反之亦然包含了情况2当然也对情况1的处理也可能有此步骤如果都为空,则返回空。 mark之后再仔细看看 代码随想录中 关于返回值的描述。 在递归函数有返回值的情况下如果要搜索一条边递归函数返回值不为空的时候立刻返回如果搜索整个树直接用一个变量left、right接住返回值这个left、right后序还有逻辑处理的需要也就是后序遍历中处理中间节点的逻辑也是回溯。 且代码随想录对本题的解析也很清晰可以再读读。 寻找最小公共祖先完整流程图如下
http://www.pierceye.com/news/717731/

相关文章:

  • 湘潭学校网站建设 z磐石网络桥 网站建设
  • 自建外贸网站多少钱长春新冠最新情况
  • 网站seo是啥镜像wordpress博客
  • 广州手机网站建设电子商务平台经营者对于竞价排名的商品或服务
  • 宁波网站建设联系电话查询网站页面设计服务
  • 网站建设关键词分类如何建设品牌网站
  • 常平哪里有招计算机网站开发的商业网站制作
  • 手机关键词点击排名软件长春seo排名扣费
  • 海晏县公司网站建设湖南省郴州市汝城县
  • 蒙阴做网站做网站怎么提取视频无广告
  • 整个网站都在下雪特效怎么做贵州省住房与城乡建设厅网站
  • 腾讯合作网站建设有哪些公司自己的网站做防伪码
  • 网站制作完成ks刷粉网站推广马上刷
  • 网站注册域名位置网上买一个商标多少钱
  • 网站开发 无形资产门户网站搭建方案
  • 湘西北京网站建设网站建设好发信息网
  • 淄博公司网站建设网站设计编程有哪些
  • 如何获取网站访客qq如何知道一个网站用什么建设的
  • 快站app客户管理软件多少钱
  • 山西教育学会的网站建设工作做ppt课件的网站
  • 网站开发还有哪些班级网站如何去建设
  • 学校网站框架wordpress 多个网址导航
  • 茶叶红酒网站建设关键词的优化方法
  • 做网站后台用什么语言好吴川市建设工程公司网站
  • 海口专业网站建设公司怎样利用网站做淘宝客
  • 雄安专业网站建设方案长沙做网站建设
  • 微信上的网站实物黄金哪个网站做的好
  • 网站建设的作用和用途wordpress外网固定链接
  • 网站做多长时间才有流量上海商城网站制作公司
  • 做电影网站服务器网站如何备案 流程图