首页 > 其他 > 详细

Lowest Common Ancestor of a Binary Tree, with Parent Pointer

时间:2014-12-17 01:26:39      阅读:273      评论:0      收藏:0      [点我收藏+]

Given a binary tree, find the lowest common ancestor of two given nodes in tree. Each node contains a parent pointer which links to its parent.

 

int getHeight(Node* p)
{
    int height = 0;
    while (p)
    {
        height++;
        p = p->parent;
    }
    return height;
}

Node* LCA(Node* p, Node *q)
{
    int h1 = getHeight(p);
    int h2 = getHeight(q);
    if (h1 > h2)
    {
        swap(h1, h2);
        swap(p, q);
    }
    for (int h = 0; h < h2-h1; h++)
    {
        q = q->parent;
    }
    while (p && q)
    {
        if (p == q)
            return p;
        p = p->parent;
        q = q->parent;
    }
    return NULL;
}

 

Lowest Common Ancestor of a Binary Tree, with Parent Pointer

原文:http://www.cnblogs.com/litao-tech/p/4168403.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!