C Программирование и структура данных - PullRequest
0 голосов
/ 24 июля 2011

Как мы можем найти ближайшего предка двух разных узлов двоичного дерева?

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

попробуйте это:

   ances(struct tree *root, struct tree *p, struct tree *q)
   {
    struct tree *left, *right, *temp;

    if(root->left==p || root->right==p || root->left==q || root->right==q)
    {
     return(root);
    }
    else
    {
     left = ancestor(root->left, p, q);
     right = ancestor(root->right, p, q);

     if(left!=NULL && right!=NULL)
     {
      return(root);
     } 
     else
     {
      temp = (left != NULL) ? left : right;
      return(temp);
     }
    }

    if(root == NULL)
      return NULL;
   }
0 голосов
/ 24 июля 2011

Для каждого узла на пути от левого узла к корню проверьте, находится ли этот узел на пути от правого узла к корню.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...