Initial
This commit is contained in:
38
bsptree/ITERATEI.TPP
Normal file
38
bsptree/ITERATEI.TPP
Normal file
@@ -0,0 +1,38 @@
|
||||
#ifndef _BSPTREE_TREEITERATORINORDER_HPP_
|
||||
#error ITERATE.HPP must precede ITERATEI.TPP
|
||||
#endif
|
||||
#ifndef _BSPTREE_TREEITERATORINORDER_TPP_
|
||||
#define _BSPTREE_TREEITERATORINORDER_TPP_
|
||||
|
||||
template <class T>
|
||||
T *TreeIteratorInorder<T>::operator++(void)
|
||||
{
|
||||
if(!mInorderStack.size())return 0;
|
||||
SmartPointer<TreeNode<T> > currTreeNode;
|
||||
|
||||
mInorderStack.pop(currTreeNode);
|
||||
if(!currTreeNode->rightNode())return &currTreeNode->item();
|
||||
for(TreeNode<T> *pTreeNode=currTreeNode->rightNode();pTreeNode;pTreeNode=pTreeNode->leftNode())
|
||||
mInorderStack.push(SmartPointer<TreeNode<T> >(pTreeNode));
|
||||
return &currTreeNode->item();
|
||||
}
|
||||
|
||||
template <class T>
|
||||
TreeIteratorInorder<T> &TreeIteratorInorder<T>::operator=(BinaryTree<T> &binaryTree)
|
||||
{
|
||||
createInorderStack(binaryTree);
|
||||
return *this;
|
||||
}
|
||||
|
||||
template <class T>
|
||||
void TreeIteratorInorder<T>::createInorderStack(BinaryTree<T> &binaryTree)
|
||||
{
|
||||
mInorderStack.clear();
|
||||
TreeNode<T> *pTreeNode=binaryTree.rootNode();
|
||||
while(pTreeNode)
|
||||
{
|
||||
mInorderStack.push(SmartPointer<TreeNode<T> >(pTreeNode));
|
||||
pTreeNode=pTreeNode->leftNode();
|
||||
}
|
||||
}
|
||||
#endif
|
||||
Reference in New Issue
Block a user