void SplayTree<Key, Data>::RecursiveConvertIndexToDArray(DArray<Key> *darray, SplayNode<Key, Data> *btree) const { if (!btree) return; RecursiveConvertIndexToDArray(darray, btree->left); darray->insert(btree->id); RecursiveConvertIndexToDArray(darray, btree->right); }
void RedBlackTree<Key, Data>::RecursiveConvertIndexToDArray(DArray<Key> *darray, RedBlackNode<Key, Data> *btree) const { if (!valid(btree)) return; RecursiveConvertIndexToDArray(darray, btree->left); darray->insert(btree->id); RecursiveConvertIndexToDArray(darray, btree->right); }
void BTree<T>::RecursiveConvertIndexToDArray( DArray <char *> *darray, BTree<T> *btree ) { AppAssert(darray); if( !btree ) return; // Base case if( btree->id ) darray->PutData( btree->id ); RecursiveConvertIndexToDArray( darray, btree->Left () ); RecursiveConvertIndexToDArray( darray, btree->Right() ); }
DArray <char *> *BTree<T>::ConvertIndexToDArray() { DArray <char *> *darray = new DArray <char *>; darray->SetSize( Size() ); RecursiveConvertIndexToDArray( darray, this ); return darray; }
DArray<Key> *SplayTree<Key, Data>::ConvertIndexToDArray() const { DArray<Key> *darray = new DArray<Key> ((int)size()); RecursiveConvertIndexToDArray(darray, root); return darray; }