寻找二叉树两个结点的最低共同父节点

题目:二叉树的结点的定义如下:

struct TreeNode
{int m_nValue;TreeNode *m_pLeft;TreeNode *m_pRight;
};

输入二叉树中的两个结点,输出这两个结点在数中最低的共同父结点。

/寻找二叉树两个结点的最低共同父节点
TreeNode *FindFirstCommonParentNode(TreeNode *pRoot, TreeNode *pNodeOne, TreeNode *pNodeTwo)
{if (NULL == pRoot){return NULL;}if (pRoot == pNodeOne || pRoot == pNodeTwo){return pRoot;}TreeNode *pLeft = FindFirstCommonParentNode(pRoot->m_pLeft, pNodeOne, pNodeTwo);TreeNode *pRight = FindFirstCommonParentNode(pRoot->m_pRight, pNodeOne, pNodeTwo);if (NULL == pLeft)       //1、左子树没有找到任何一个结点,则第一个公共父节点必定在右子树,而且找到第一个结点就是最低共同父节点{return pRight;}else if (NULL == pRight) //2、右子树没有找到任何一个结点,则第一个公共父节点必定在左子树,而且找到第一个结点就是最低共同父节点{return pLeft;}else                     //3、分别在结点的左右子树找到,则此节点必为第一个公共父节点{return pRoot;}
}

寻找二叉树两个结点的最低共同父节点相关推荐

  1. 程序员面试100题之五:二叉树两个结点的最低共同父结点

    题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...

  2. 二叉树两个结点的最低公共父结点 【微软面试100题 第七十五题】

    题目要求: 输入二叉树中的两个结点,输出这两个及诶单在数中最低的共同父结点. 题目分析: 还有一种情况:如果输入的两个结点中有一个或两个结点不在二叉树中,则输出没有共同父结点: 因此,可以在程序中定义 ...

  3. 寻找树中两个结点的最低公共祖先

    寻找树中两个结点的最低公共祖先 Q:在树中寻找两个结点的最低公共祖先,是什么意思呢? A:树是由根节点衍生左右孩子继续衍生左右孩子的左右孩子.所以呢树中的两个结点是一定拥有最低公共祖先(这两个结点Q: ...

  4. 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点[数据结构]

    题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...

  5. 树中两个结点的最低公共祖先

    题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数 ...

  6. 50:树中两个结点的最低公共祖先

    题目:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针. 树的结点定义 private static class TreeNode {int val;List<TreeNo ...

  7. 剑指offer之求二叉树中两个节点的最低共同父节点

    1 问题 求二叉树中俩个节点的最低共同父节点,比如二叉树如下 42 61 3 5 7 比如节点1和3两个节点的最低共同父节点是2,节点3和5两个节点的最低共同父节点是4,节点5和6两个节点的最低共同父 ...

  8. 求一颗二叉树中两个节点的最低公共父节点

    题目:求一棵二叉树中两个节点的最低公共父节点 思路:递归 和 非递归 public static TreeNode getLastCommonParentRec(TreeNode root, Tree ...

  9. 二叉树两个结点的第一个共同祖先

    题目:设计并实现一个算法,找出二叉树中某两个结点的第一个共同祖先.不得将额外的结点存储在另外的数据结构中.注意,这不一定是二叉查找树. 解法:如果两个结点都在树中,且其中一个为根结点,那么直接返回根结 ...

最新文章

  1. springboot 读取配置文件内容的几种方式
  2. python学习笔记:easygui的简单示例
  3. 【Matlab 图像】HSV 空间图片分离器
  4. pin controller driver代码分析
  5. 关于std:auto_ptr
  6. Android Studio 1.1的安装和遇到的坑
  7. 交换机VLAN、 TRUNK 、VTP 配置
  8. 联想m100显示耗材_RTX3070显卡搭档高性能显示器,畅玩精美游戏大作!
  9. 查看java运行时参数_查看JVM运行时参数
  10. 压缩包安装_SPSS 21 下载(内附压缩包及安装过程)
  11. 网游源码完整服务端_【每日源码】微人事是一个前后端分离的人力资源管理系统,项目采用SpringBoot+Vue开发。...
  12. 基本MVC2模式创建新闻网站
  13. 作业二在校大学生零食消费调查问卷
  14. 免积分下载与PDF转换
  15. android关联发送程序,Android Handler机制之Message的发送与取出
  16. 人工智能 —— 归结演绎推理
  17. Python 报错Process finished with exit code -1073740791 (0xC0000409)解决方法
  18. iphone13 Pro的运行内存是6gb
  19. Excel合并单元格快捷键
  20. android模拟电源按键

热门文章

  1. 向“下”出发,陪玩江湖风云再起?
  2. JavaScript 知识碎片[四] for ···in 和 for ···of 的区别与基本使用
  3. 【聚类分析】机器学习中聚类分析的简单详细案例,小白也能做!
  4. 深度学习——参数量计算
  5. 10 款你最需要的经典免费软件!
  6. maven基础01环境环境搭建及配置部署
  7. Bootstrap学习总结
  8. 祝我们的祖国73周岁快乐!
  9. 【Oracle 11g中 ORA-28000 账号被锁定的解决办法】
  10. 提示计算机丢失d3dx9_43.dll,Win7电脑运行游戏经常提示“丢失d3dx943.dll”怎么办?...