首页 > 其他分享 >二叉搜索树的公共祖先

二叉搜索树的公共祖先

时间:2023-08-25 20:22:43浏览次数:37  
标签:结点 return val 祖先 lowestCommonAncestor 二叉 搜索 TreeNode root

力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

1     TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {
2         if(root==nullptr||root==p||root==q)return root;
3         //如果该结点比两个结点都大或则都小,则只需要搜索右子树或左子树,而且只要找到某个结点的值是p和q其中的一个就停止搜索,层层向上返回该结点
4         if(p->val<root->val&&q->val<root->val) return lowestCommonAncestor(root->left,p,q);
5         else if(p->val>root->val&&q->val>root->val) return lowestCommonAncestor(root->right,p,q);
      //如果该结点介于两者中间则直接返回这个结点 6 else return root; 7 8 }

 

标签:结点,return,val,祖先,lowestCommonAncestor,二叉,搜索,TreeNode,root
From: https://www.cnblogs.com/Sandals-little/p/17657847.html

相关文章

  • 力扣---1448. 统计二叉树中好节点的数目
    给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。「好节点」X定义为:从根到该节点X所经过的节点中,没有任何节点的值大于X的值。 示例1:输入:root=[3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点(3)永远是个好节点。节点4->(3,4)是路......
  • leetcode236求最近公共祖先
    递归TreeNode*dfs(TreeNode*root,TreeNode*p,TreeNode*q){if(!root)returnroot;//当发现这个节点已经是叶节点时,要告诉上层if(root==p||root==q)returnroot;//当发现是p节点或者q时也要告诉上层TreeNode*left=dfs(root->left,p,q);//左子树是否有p或者q......
  • 「学习笔记」meet in the middle(折半搜索)
    meetinthemiddle,适用于输入数据较小,但也没小到可以直接用暴力搜索通过的情况。主要的思想就是讲整个搜索过程分成两半进行,最后在将这两半的结果进行合并,对于搜索复杂度为\(O(a^b)\)的情况,meetinthemiddle可以将它优化为\(O(a^{\frac{b}{2}})\)。题目P5691[NOI2001]......
  • 二叉树的最近公共祖先
    235.二叉搜索树的最近公共祖先-力扣(LeetCode)经验1:在二叉树中找满足条件的结点的问题一般使用后续遍历,也就是说如果找到了这个结点那么就将它返回给上层,然后层层返回最终返回到根结点经验2:本题的解题技巧:如果在某一结点找到了p或q,那么就不用往下递归了,直接将这个结点返回,即便......
  • 从数组中构建二叉树
    #include<iostream>#include<sstream>#include<stack>#include<vector>#include<queue>usingnamespacestd;structTreeNode{intval;TreeNode*left;TreeNode*right;TreeNode():val(0),left(nullptr),......
  • PP-TS基于启发式搜索和集成方法的时序预测模型,使预测更加准确
    时间序列数据在各行业和领域中无处不在,如物联网传感器的测量结果、每小时的销售额业绩、金融领域的股票价格等等,都是时间序列数据的例子。时间序列预测就是运用历史的多维数据进行统计分析,推测出事物未来的发展趋势。为加快企业智能化转型进程,降低时序技术应用门槛,飞桨持续进行产品......
  • 一个意外错误使你无法创建该文件。如果你继续收到此错误,可以使用错误代码来搜索有关此
     解决方法:正确方法应该是以管理员权限打开cmd,然后执行 icaclsc:\/setintegritylevelM ......
  • day15 - 二叉树 part02
    102. 二叉树的层序遍历详解/***Definitionforabinarytreenode.*structTreeNode{*intval;*TreeNode*left;*TreeNode*right;*TreeNode():val(0),left(nullptr),right(nullptr){}*TreeNode(intx):val(x),left(nullp......
  • 求二叉树中某结点的所有祖宗结点,该结点不唯一
    利用非递归后序遍历的方法。当匹配成功时,此时,栈中结点都是目标结点的祖宗结点。目前有个小问题,会重复打印的祖宗结点,但是可以根据根节点判断有多少个目标结点#include<stdio.h>#include<stdlib.h>#defineMaxSize100typedefstructNode{structNode*lchild,*rc......
  • 下拉选择组件 指定搜索字段
     show-search后可开启搜索模式。把搜索的值内容改为optionFilterProp=label想同时搜索label和value两个字段把label设置成label="v.roleName+v.roleId"<a-selectref="select"v-model:value="value1"show-searchoptionFilterProp="label">&l......