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

苏州网站建设案例深圳搜索seo优化排名

苏州网站建设案例,深圳搜索seo优化排名,如何评价一个网站做的是否好,学校网站改版1、题目描述 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以…

1、题目描述

  • 给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
  • 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
  • 例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]
  • 在这里插入图片描述
    示例 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。因为根据定义最近公共祖先节点可以为节点本身。

2、VS2019上运行

使用存储父节点的方法

#include <iostream>
#include <unordered_map>
using namespace std;// 二叉树节点的定义
struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};class Solution {
public:unordered_map<int, TreeNode*> fa; // 父节点哈希表unordered_map<int, bool> vis; // 访问标记哈希表// 进行深度优先搜索,为每个节点分配父节点void dfs(TreeNode* root) {if (root->left != nullptr) {fa[root->left->val] = root;dfs(root->left);}if (root->right != nullptr) {fa[root->right->val] = root;dfs(root->right);}}// 在二叉树中找到两个节点的最近公共祖先TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {fa[root->val] = nullptr;dfs(root);//遍历树填充父节点哈希表while (p != nullptr) {vis[p->val] = true;// 将节点p标记为已访问p = fa[p->val];// 将p移动到其父节点}while (q != nullptr) {if (vis[q->val]) return q;//如果节点q已被标记为已访问,说明q是最近公共祖先,直接返回qq = fa[q->val];//将q移动到其父节点}return nullptr;}
};int main() {// 创建一个示例二叉树TreeNode* root = new TreeNode(3);root->left = new TreeNode(5);root->right = new TreeNode(1);root->left->left = new TreeNode(6);root->left->right = new TreeNode(2);root->left->right->left = new TreeNode(7);root->left->right->right = new TreeNode(4);root->right->left = new TreeNode(0);root->right->right = new TreeNode(8);// 定义两个节点,用于查找它们的最近公共祖先TreeNode* p = root->left;TreeNode* q = root->right;// 创建解决方案类的实例Solution obj;// 寻找最近公共祖先TreeNode* lca = obj.lowestCommonAncestor(root, p, q);// 打印最近公共祖先的值if (lca != nullptr) {cout << "最近公共祖先: " << lca->val << endl;}else {cout << "未找到最近公共祖先。" << endl;}// TODO: 删除动态分配的树节点,以避免内存泄漏return 0;
}

最近公共祖先: 3

3、解题思路

(官方)

  • 1、从根节点开始遍历整棵二叉树,用哈希表记录每个节点的父节点指针。
  • 2、从 p 节点开始不断往它的祖先移动,并用数据结构记录已经访问过的祖先节点。
  • 3、同样,我们再从 q 节点开始不断往它的祖先移动,如果有祖先已经被访问过,即意味着这是 p 和 q 的深度最深的公共祖先,即 LCA 节点

4、二叉树和二叉搜索树的区别

  • 在二叉搜索树中,对于每个节点,其左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。对于普通的二叉树,没有节点值的有序性要求,节点的排列相对自由。节点可以按照任意方式组织,没有特定的约束条件。
http://www.sczhlp.com/news/38268/

相关文章:

  • 东莞大朗网站建设公司优化设计三年级上册答案语文
  • 防水堵漏公司做网站效果怎样重庆网站搜索排名
  • 福建做网站公司排名策划推广方案
  • 什么做网站开发地推团队接单平台
  • 广东东莞邮编福建seo搜索引擎优化
  • 做代理稳妥的彩票网站有哪些网站推广的方式
  • 网站频道运营怎么做广州seo网站公司
  • 做一张简单的app网站多钱游戏优化
  • 别再猜了-开始测量吧-一份实用的Web性能指南(0093)
  • 实时通信的头痛-问题不在WebSocket而是你的框架(3646)
  • 超越-env-一份成熟的应用程序配置指南(7706)
  • 你的部署流程已然落伍-热重启的失传艺术(1621)
  • 你的测试又慢又不可靠-因为你测错了东西
  • 网站备案 登录名中国纪检监察报
  • 基层建设期刊在哪个网站上检索福州百度快速优化
  • 网站建设的重要性 学校网络推广的方法和技巧
  • 电子商务网站开发数据库表格谷歌查询关键词的工具叫什么
  • 北京响应式网站开发app推广引流
  • pc 网站开发设计seo搜索引擎优化总结报告
  • 什么牛网站建设免费推广方式有哪些
  • 渭南专业做网站aso优化推广公司
  • 网站制作ppt深圳网络营销公司
  • 常州辉煌网络网站制作建立一个企业网站需要多少钱
  • 别再猜了-开始测量吧-一份实用的Web性能指南(6862)
  • 告别框架臃肿-我如何在不牺牲性能的情况下重新发现简单之美(5544)
  • 实时通信的头痛-问题不在WebSocket而是你的框架(9284)
  • 你的部署流程已然落伍-热重启的失传艺术(3244)
  • 别再猜了-开始测量吧-一份实用的Web性能指南(0804)
  • 宝安品牌网站制作济南优化哪家好
  • 公司网站维护如何做分录成都网站seo技术