在二叉树中查找一个结点
在二叉树中查找一个结点,如果找到返回结点地址,如果没找到,返回NULL
查找策略:优先左,如果是空树,返回NULL;如果查找的是根,直接返回根的地址,先去左子树中找,如果找到了,返回结果,如果左子树也没有找到,再去找右子树。
Node * Search(BNode *root, TDatatype key)
{
if (root == NULL) {
return NULL;
}
if (root->data == key) {
// 如果根命中了
return root;
}
BNode *node = Search(root->left, key);
if (node != NULL) {
// 左子树中找到了
return node;
}
node = Search(root->right, key);
if (node != NULL) {
return node;
}
else {
return NULL;
}
}