如何在非变体二叉树中搜索给定节点的父节点?

时间:2020-09-19 17:33:25

标签: c search data-structures binary-tree

我有用于搜索二叉树中的节点的代码。如何找到其KEY作为参数提供的Node的父节点?

以下是正常搜索二叉树的代码-

struct Tree* search(struct Tree *root, int KEY)
{
    struct Tree *temp;
    if(root == NULL) return NULL; //Base condition
    else
    {
        if(root-> data == KEY) return root;
        else
        {
            temp = search(root-> Lchild, KEY);
            if(temp != NULL) return temp;
            else return(search(root-> Rchild, KEY));
        }
    }
    return NULL;
}

1 个答案:

答案 0 :(得分:0)

您将返回其值与Tree匹配的KEY节点的地址,而不是其父节点。假设所有节点值在该树中都是不同的,那么如果父节点Tree的子节点值(左或右子节点)与KEY匹配,则必须遵循以下代码返回父节点struct Tree* search(struct Tree *root, int KEY){ if(root == NULL){ return NULL; } if(root->Lchild != NULL && root->Lchild->data == KEY){ return root; } if(root->Rchild != NULL && root->Rchild->data == KEY){ return root; } struct Tree *left = search(root->Lchild, KEY); struct Tree *right = search(root->Rchild, KEY); if(left != NULL){ return left; }else if(right != NULL){ return right; } return NULL; }

{{1}}
相关问题