0

我已经实现了这个函数,它从一个节点递归搜索并返回一个节点,该节点有一个具有给定节点数据的子节点,如果找到,则返回 0。

Node<T> * BinaryTree<T>::searchParent ( T key , Node<T> * p ) const
{
    if ( p == 0 )
        return 0;

    if ( p->left && p->left->info == key )
        return p;
    else if ( p->right && p->right->info == key  )
        return p;

    Node<T> * q = searchParent ( key , p->left );

    if ( q == 0 )
        return searchParent ( key , p->right );

    return q;
}

现在我想实现这个函数,如果只给出节点数据,它会查找并返回给定节点的父节点的数据。

T BinaryTree<T>::getParent( T node )

但我无法递归或非递归地实现这一点。

4

1 回答 1

1

基本思想:

T BinaryTree<T>::getParent(T node)
{
  return searchParent(node, root)->info;
}

您可能需要添加一些错误检查。由于您返回的是泛型类型,因此如果未找到或已经在根目录中,您可能不得不抛出异常。

于 2013-06-02T18:43:44.167 回答