寻找二叉树两个结点的最低共同父节点
寻找二叉树两个结点的最低共同父节点
题目:二叉树的结点的定义如下:
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;}
}
寻找二叉树两个结点的最低共同父节点相关推荐
- 程序员面试100题之五:二叉树两个结点的最低共同父结点
题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...
- 二叉树两个结点的最低公共父结点 【微软面试100题 第七十五题】
题目要求: 输入二叉树中的两个结点,输出这两个及诶单在数中最低的共同父结点. 题目分析: 还有一种情况:如果输入的两个结点中有一个或两个结点不在二叉树中,则输出没有共同父结点: 因此,可以在程序中定义 ...
- 寻找树中两个结点的最低公共祖先
寻找树中两个结点的最低公共祖先 Q:在树中寻找两个结点的最低公共祖先,是什么意思呢? A:树是由根节点衍生左右孩子继续衍生左右孩子的左右孩子.所以呢树中的两个结点是一定拥有最低公共祖先(这两个结点Q: ...
- 程序员面试题精选100题(48)-二叉树两结点的最低共同父结点[数据结构]
题目:二叉树的结点定义如下: struct TreeNode { int m_nvalue; TreeNode* m_pLeft; TreeNode* m_pRight; }; 输入二叉树中的两个结点 ...
- 树中两个结点的最低公共祖先
题目描述: 给定一棵树,同时给出树中的两个结点,求它们的最低公共祖先. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为一个数n(0<n<1000),代表测试样例的个数 ...
- 50:树中两个结点的最低公共祖先
题目:求树中两个结点的最低公共祖先,此树不是二叉树,并且没有指向父节点的指针. 树的结点定义 private static class TreeNode {int val;List<TreeNo ...
- 剑指offer之求二叉树中两个节点的最低共同父节点
1 问题 求二叉树中俩个节点的最低共同父节点,比如二叉树如下 42 61 3 5 7 比如节点1和3两个节点的最低共同父节点是2,节点3和5两个节点的最低共同父节点是4,节点5和6两个节点的最低共同父 ...
- 求一颗二叉树中两个节点的最低公共父节点
题目:求一棵二叉树中两个节点的最低公共父节点 思路:递归 和 非递归 public static TreeNode getLastCommonParentRec(TreeNode root, Tree ...
- 二叉树两个结点的第一个共同祖先
题目:设计并实现一个算法,找出二叉树中某两个结点的第一个共同祖先.不得将额外的结点存储在另外的数据结构中.注意,这不一定是二叉查找树. 解法:如果两个结点都在树中,且其中一个为根结点,那么直接返回根结 ...
最新文章
- java applet 记事本_jsb java编写的安卓app记事本程序,适合app初学者 Applet 243万源代码下载- www.pudn.com...
- C2065	“__m128d”: 未声明的标识符
- 2.3.9 读者-写者问题
- java的优先队列注意事项
- 改了一行代码,MySQL查询效率提升了80%,老板奖了我50万
- DFS Codeforces Round #290 (Div. 2) B. Fox And Two Dots
- Android开发笔记(一百五十八)运行时动态授权管理
- maven 下载源码eclipse的配置
- 电大有计算机教程吗,电大教程 计算机概述.ppt
- django下载或者导出文件
- [置顶] 一个程序员的科幻小说
- PTA 数据结构与算法 7-46 新浪微博热门话题
- html添加鼠标右键菜单,Fabric.js - 添加鼠标右键点击事件响应(附:右键菜单)...
- cephadm全功能安装Ceph Pacfic
- 推荐系统中的常用算法——基于Session的推荐
- 【华人学者风采】黄霞 清华大学
- 电脑开不了机是不是电源坏了
- Mendix for Manufacturing Industries指南
- c语言中 p2 amp n1表示什么意思,2005年9月全国计算机等级考试二级C语言笔试试题及答案mjj...
- 市场调研报告-全球与中国船用控制板市场现状及未来发展趋势
热门文章
- ElasticSearch中含有Object类型和数组对象的查询
- 学计算机戴尔还是联想好,四五千买联想还是戴尔 华为和联想电脑哪个好
- html文字段落代码,HTML 段落
- AD官网上获取PCB库
- 30个电脑日常维护小技巧
- 记一次C语言编写的爬虫 wininet 堆糖爬虫
- 魔坊APP项目-22-种植园,种植栏的功能实现,客户端根据激活状态和未激活状态分别显示树桩、服务端提供种植植物的相关数据、解锁树桩、植物相关道具使用
- 请大家警惕这个散播木马的网站 www.zzyqr.com,本文简要地分析了它通过网页的传播方式...
- stm32解码红外遥控实验
- bt5上搭建钓鱼wifi