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

网站开发合作协议合同范本wordpress 目录 伪静态

网站开发合作协议合同范本,wordpress 目录 伪静态,天津自己制作网站,深圳建网站哪家好二叉树的最近公共祖先 题目思路代码(详细注释) 题目 二叉树的最近公共祖先 思路 我们可以通过两个栈来实现 实现一个FindPath函数,用来查找从根节点到目标节点的路径(路径可以用栈来保存) 路径保存好后,…

二叉树的最近公共祖先

  • 题目
  • 思路
  • 代码(详细注释)

题目


二叉树的最近公共祖先


在这里插入图片描述

思路

我们可以通过两个栈来实现

实现一个FindPath函数,用来查找从根节点到目标节点的路径(路径可以用栈来保存)

路径保存好后,
再使用两个循环来比较栈Ppath和Qpath的大小,使得两个栈的大小相等。
然后,再使用一个循环来比较栈顶元素,直到找到最低公共祖先。在每一次比较过程中,如果栈顶元素不相等,就分别从两个栈中弹出栈顶元素,直到找到最低公共祖先。
在这里插入图片描述

操作如下:

  1. 在lowestCommonAncestor函数中,声明两个栈Ppath和Qpath,用于保存从根节点到节点p和q的路径。

  2. 调用FindPath函数两次,分别查找节点p和q的路径。FindPath函数是一个递归函数,用于在二叉树中查找节点x的路径,并将路径保存在给定的栈path中。

  3. 在FindPath函数中,首先判断当前节点root是否为空,如果为空,则返回false。然后,将当前节点root压入栈path中。

  4. 接着,判断当前节点root是否等于目标节点x,如果是,则返回true,表示已经找到目标节点。

  5. 如果目标节点不在当前节点root上,那么就递归地在左子树和右子树中查找目标节点。如果在左子树中找到目标节点,则返回true,表示已经找到目标节点。如果在右子树中找到目标节点,则同样返回true。

  6. 如果左子树和右子树都没有找到目标节点,则说明当前节点不在最终路径上,需要将其从栈path中弹出,并返回false。

  7. 回到lowestCommonAncestor函数,使用两个循环来比较栈Ppath和Qpath的大小,使得两个栈的大小相等。

  8. 然后,再使用一个循环来比较栈顶元素,直到找到最低公共祖先。在每一次比较过程中,如果栈顶元素不相等,就分别从两个栈中弹出栈顶元素,直到找到最低公共祖先。

  9. 最后,返回栈Qpath的栈顶元素,即为最低公共祖先节点。

代码(详细注释)

class Solution {
public:// 查找从根节点到目标节点的路径bool FindPath(TreeNode *root, TreeNode *x, stack<TreeNode*>& path) {if (root == nullptr) {return false; // 当前节点为空,返回false}path.push(root); // 将当前节点加入路径if (x == root) {return true; // 找到目标节点,返回true}if (FindPath(root->left, x, path)) {return true; // 在左子树中找到目标节点,返回true}if (FindPath(root->right, x, path)) {return true; // 在右子树中找到目标节点,返回true}path.pop(); // 当前节点不在路径上,弹出当前节点return false; // 返回false}TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {stack<TreeNode*> Ppath; // 保存节点p的路径stack<TreeNode*> Qpath; // 保存节点q的路径FindPath(root, p, Ppath); // 查找节点p的路径FindPath(root, q, Qpath); // 查找节点q的路径// 使得两个路径的长度相等while (Ppath.size() != Qpath.size()) {if (Ppath.size() > Qpath.size()) {Ppath.pop(); // 如果Ppath路径长,弹出Ppath的栈顶元素} else {Qpath.pop(); // 如果Qpath路径长,弹出Qpath的栈顶元素}}// 逐个比较两个路径上的节点,找到最低公共祖先while (Ppath.top() != Qpath.top()) {Qpath.pop(); // 弹出Qpath栈顶元素Ppath.pop(); // 弹出Ppath栈顶元素}return Qpath.top(); // 返回最低公共祖先节点}
};

(本题完)

http://www.yayakq.cn/news/827598/

相关文章:

  • 闵行区网站设计重庆市建设工程信息官方网站
  • 大连市住房与城乡建设部网站网站开发有多少种语言
  • 做电商设计在哪个网站接单ui界面设计包括哪些内容
  • 定制网站建设开发维护淘宝网站开发系统
  • 走着瞧网站 设计白酒类网站模板
  • 网站建设与管理升学就业方向网站推广策划书 精品
  • 移动网站建设推荐海外酒店 网站建设
  • 网站建设移动网络公司北京网站建设流程
  • 建行商城网站企业战略规划方案
  • 提升网站建设公司建设网站需要什么资质
  • 网站建设系统网页设计实验报告结果分析
  • 网站开发增强骨密度的食品网页制作基础教程我的足球网
  • 寿光网站制作百度搜索seo怎么做
  • 简单网站建设优化自己开发的软件怎么卖
  • 做机械的专业外贸网站有哪些微信公众号小程序有哪些功能
  • 装修公司网站制作广州第一网站
  • 开发php网站开发微页制作网站模板下载软件
  • 网站目录架构深圳网站建设服务器
  • 网站建设 竞标公司要求想建网站怎么做
  • 工程建设科学技术奖申报网站网站首页设计风格
  • 网站站建设建技设术技术网页制作与网站建设初学者必看教程
  • 电脑主机做网站服务器网站logo
  • 定制网站收费wordpress外接api
  • wordpress建站教程 贴吧唐山模板网站建设
  • 可信网站 认证规则wordpress鱼
  • 新闻标题做的好的网站微网站 布局
  • 网站后台 批量上传山东济南最新事件
  • 西安做网站选哪家好wordpress全景插件
  • 玉山建设局网站软件开发流程八个步骤概要分析
  • 网站网页设计怎样公司网站建设价格