封装一个二叉搜索树——迭代器遇到一个问题求教
用模板类封装一个二叉搜索树,要做一个类似迭代器的东西,做到前置的自加(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;
}