读书人

封装一个二叉搜索树迭代器遇到一个

发布时间: 2013-07-09 09:50:48 作者: rapoo

封装一个二叉搜索树——迭代器遇到一个问题求教
用模板类封装一个二叉搜索树,要做一个类似迭代器的东西,做到前置的自加(self operator ++ ())的时候,中续遍历用递归写貌似不行。用栈模拟的话,好像没办法确定当我回到某个节点时,我是去遍历他的右子树还是去找他的爷爷节点。求教! Iterator 模板类
[解决办法]
中序遍历,非递归,要求双向链接:


第一个:
current = root;
while( current->left != NULL )
current = current->left;

增量:
if( current->right != NULL )
{
current = current->right;
while( current->left != NULL )
current = current->left;
}
else
{
prev = current;
current = current->parent;
while( current != NULL and current->right == prev )
current = current->parent;
}


读书人网 >C++

热点推荐