我已经实现了这个函数,它从一个节点递归搜索并返回一个节点,该节点有一个具有某些给定节点数据的子节点(如果找到),否则为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 )
但我无法以递归方式或非递归方式实现此方法。
答案 0 :(得分:1)
基本理念:
T BinaryTree<T>::getParent(T node)
{
return searchParent(node, root)->info;
}
您可能需要添加一些错误检查。由于您返回的是泛型类型,因此如果未找到或者已经在根目录中,您可能需要抛出异常。