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

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

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. java applet 记事本_jsb java编写的安卓app记事本程序,适合app初学者 Applet 243万源代码下载- www.pudn.com...
  2. C2065 “__m128d”: 未声明的标识符
  3. 2.3.9 读者-写者问题
  4. java的优先队列注意事项
  5. 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
  6. DFS Codeforces Round #290 (Div. 2) B. Fox And Two Dots
  7. Android开发笔记(一百五十八)运行时动态授权管理
  8. maven 下载源码eclipse的配置
  9. 电大有计算机教程吗,电大教程 计算机概述.ppt
  10. django下载或者导出文件
  11. [置顶] 一个程序员的科幻小说
  12. PTA 数据结构与算法 7-46 新浪微博热门话题
  13. html添加鼠标右键菜单,Fabric.js - 添加鼠标右键点击事件响应(附:右键菜单)...
  14. cephadm全功能安装Ceph Pacfic
  15. 推荐系统中的常用算法——基于Session的推荐
  16. 【华人学者风采】黄霞 清华大学
  17. 电脑开不了机是不是电源坏了
  18. Mendix for Manufacturing Industries指南
  19. c语言中 p2 amp n1表示什么意思,2005年9月全国计算机等级考试二级C语言笔试试题及答案mjj...
  20. 市场调研报告-全球与中国船用控制板市场现状及未来发展趋势

热门文章

  1. ElasticSearch中含有Object类型和数组对象的查询
  2. 学计算机戴尔还是联想好,四五千买联想还是戴尔 华为和联想电脑哪个好
  3. html文字段落代码,HTML 段落
  4. AD官网上获取PCB库
  5. 30个电脑日常维护小技巧
  6. 记一次C语言编写的爬虫 wininet 堆糖爬虫
  7. 魔坊APP项目-22-种植园,种植栏的功能实现,客户端根据激活状态和未激活状态分别显示树桩、服务端提供种植植物的相关数据、解锁树桩、植物相关道具使用
  8. 请大家警惕这个散播木马的网站 www.zzyqr.com,本文简要地分析了它通过网页的传播方式...
  9. stm32解码红外遥控实验
  10. bt5上搭建钓鱼wifi