码迷,mamicode.com
首页 > 其他好文 > 详细

Lowest Common Ancestor of a Binary Tree, with Parent Pointer

时间:2014-12-17 01:28:42      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:des   style   blog   ar   color   sp   for   on   div   

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

标签:des   style   blog   ar   color   sp   for   on   div   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!