寻找二叉树两个结点的最低共同父节点
2014-09-12 10:35
288 查看
寻找二叉树两个结点的最低共同父节点
题目:二叉树的结点的定义如下: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;
}
}
相关文章推荐
- 寻找二叉树两个结点的最低共同父节点(2014京东笔试题)
- 算法-寻找二叉树两个结点的最低共同父节点(OC实现)
- 寻找二叉树两个结点的最低共同父节点
- 二叉树两个结点的最低共同父节点
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 一颗普通的二叉树,如何寻找两个节点的最低公共祖先(发现的一个与算法无关的引用问题)
- 寻找二叉树两个节点的最低公共祖先(LCA)
- 【二叉树】寻找二叉树/BST的两个节点的最低公共祖先
- 程序员面试100题之五 二叉树两个节点的最低共同父节点
- 算法: 在二叉树中找到两个节点的最低共同父节点
- C语言 二叉树中寻找指定两个数值的最低父节点
- 判断二叉树中两个节点的最低共同父节点
- 判断二叉树中两个节点的最低共同父节点
- 找出二叉树中两个节点的最低共同父节点
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 寻找二叉树两个节点的最低公共祖先
- 二叉树两个最低的共同父节点
- 二叉树中两个结点的最低公共祖先