2015-10-26 217 views
0

第n个节点使用该引导程序:查找二叉搜索树

template <class Comparable> 
const Comparable& AugmentedBinarySearchTree<Comparable>::NthElement(int n) 
{ 
    int *i = 0; 
    return NthElement(root, i, n)->element; 
} 

你怎么会发现在使用nodesVisited指针跟踪节点查了BST的第n个节点?

template <class Comparable> 
BinaryNode<Comparable>* AugmentedBinarySearchTree<Comparable>:: 
NthElement(BinaryNode<Comparable> *t, int *nodesVisited, int n) const 
{ 

} 

在BST每个节点都有一个指针leftright和称为elementtemplate <class Comparable>的值。

+0

二叉树中的“第N个节点”是什么意思?这不取决于二叉树是如何遍历的? – PaulMcKenzie

+0

@PaulMcKenzie通过查找“第N个节点”,我的意思是插入树中的第n个值,这是非常明显的。 –

+0

以任何您想要的顺序遍历树(可能按顺序)。为每个节点增加'* nodesVisited'。当'* nodesVisited == n'时停止。 –

回答

0

这听起来像(你的评论),就像你正在寻找Boost的多指标容器(http://www.boost.org/doc/libs/1_59_0/libs/multi_index/doc/index.html)。您可以使用矢量和地图视图,并使用push_back插入矢量视图,同时使用地图视图按键搜索。然后,您将使用矢量视图来获取第n个插入的元素。