我有用于搜索二叉树中的节点的代码。如何找到其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;
}
答案 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}}