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

C语言 | Leetcode C语言题解之第236题二叉树的最近公共祖先

题目:

题解:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     struct TreeNode *left;*     struct TreeNode *right;* };*/typedef struct road_t
{struct TreeNode *road_node; // 途径路径struct road_t *p_next;
}ROAD_T;int road_fill(struct TreeNode* root, struct TreeNode* p, ROAD_T *road_node_now) // 路径填充
{ROAD_T *new_node = NULL;int flag = 0;if(!root){return 0;}if(root == p) // 找到节点置起标志位,将途径路径存储{flag = 1;}flag |= road_fill(root->left, p, road_node_now);flag |= road_fill(root->right, p, road_node_now);if(flag){new_node = (ROAD_T *)malloc(1 * sizeof(ROAD_T));if(!new_node){printf("open space error");exit(0);}new_node->road_node = root;new_node->p_next = road_node_now->p_next;road_node_now->p_next = new_node;return flag;}return 0;
}struct TreeNode *find_sncestor(ROAD_T *road_head_p, ROAD_T *road_head_q) // 寻找公共节点
{ROAD_T *now_p_node = road_head_p->p_next;ROAD_T *now_q_node = road_head_q->p_next;ROAD_T *last_same_node = NULL;while(now_p_node){now_q_node = road_head_q;while(now_q_node){if(now_p_node->road_node == now_q_node->road_node){last_same_node = now_p_node->road_node;}now_q_node = now_q_node->p_next;}now_p_node = now_p_node->p_next;}return last_same_node;
}struct TreeNode* lowestCommonAncestor(struct TreeNode* root, struct TreeNode* p, struct TreeNode* q) {ROAD_T *road_head_p = (ROAD_T *)calloc(1, sizeof(ROAD_T));ROAD_T *road_head_q = (ROAD_T *)calloc(1, sizeof(ROAD_T));if(!road_head_q || !road_head_p){printf("open space error");exit(0);}road_fill(root, p, road_head_p); // 新建p节点路径road_fill(root, q, road_head_q); // 新建q节点路径return find_sncestor(road_head_p, road_head_q);
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Pycharm与Gitlab交互
  • 探索大模型能力--prompt工程
  • 【轻松拿捏】Java都有哪些特性?
  • 怎么做度假酒店神秘顾客调查?
  • RflySim工具链常见问题解答
  • Kafka接收消息
  • 《简历宝典》12 - 简历中“项目经历”,内功学习 - 下篇
  • 2024最新最全面的软件测试自动化面试题(含答案)
  • 网络爬虫Scrapy shell 的使用和介绍
  • STM32+TMC2209控制步进电机正反转。
  • WEB07Vue+Ajax
  • openharmony上传图片,并获取返回路径
  • Unable to obtain driver using Selenium Manager: Selenium Manager failed解决方案
  • 角点检测及MATLAB实现
  • AIGC笔记--基于Stable Diffusion实现图片的inpainting
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • C++类中的特殊成员函数
  • CentOS 7 修改主机名
  • es6要点
  • JAVA SE 6 GC调优笔记
  • JavaScript 基本功--面试宝典
  • Koa2 之文件上传下载
  • miaov-React 最佳入门
  • 阿里研究院入选中国企业智库系统影响力榜
  • 分享几个不错的工具
  • 构造函数(constructor)与原型链(prototype)关系
  • 码农张的Bug人生 - 见面之礼
  • 扑朔迷离的属性和特性【彻底弄清】
  • 如何抓住下一波零售风口?看RPA玩转零售自动化
  • 三分钟教你同步 Visual Studio Code 设置
  • 一道面试题引发的“血案”
  • 云栖大讲堂Java基础入门(三)- 阿里巴巴Java开发手册介绍
  • 完善智慧办公建设,小熊U租获京东数千万元A+轮融资 ...
  • ​Java并发新构件之Exchanger
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​批处理文件中的errorlevel用法
  • ​如何在iOS手机上查看应用日志
  • #define,static,const,三种常量的区别
  • #nginx配置案例
  • #pragam once 和 #ifndef 预编译头
  • #stm32整理(一)flash读写
  • (14)目标检测_SSD训练代码基于pytorch搭建代码
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (附源码)计算机毕业设计大学生兼职系统
  • (接口自动化)Python3操作MySQL数据库
  • (原創) 未来三学期想要修的课 (日記)
  • (转)用.Net的File控件上传文件的解决方案
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .cn根服务器被攻击之后
  • .gitignore文件设置了忽略但不生效
  • .NET C# 操作Neo4j图数据库
  • .NET CLR Hosting 简介
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET3.5下用Lambda简化跨线程访问窗体控件,避免繁复的delegate,Invoke(转)
  • .NET6 命令行启动及发布单个Exe文件