二叉树getParent函数

时间:2013-06-02 18:18:45

标签: c++ data-structures binary-tree

我已经实现了这个函数,它从一个节点递归搜索并返回一个节点,该节点有一个具有某些给定节点数据的子节点(如果找到),否则为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 )

但我无法以递归方式或非递归方式实现此方法。

1 个答案:

答案 0 :(得分:1)

基本理念:

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

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