This commit is contained in:
2024-08-07 09:12:07 -04:00
parent ca445435a0
commit fdfadd5c7e
1021 changed files with 73601 additions and 0 deletions

38
bsptree/ITERATEI.TPP Normal file
View 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