📄 bsttree.h
字号:
// BstTree.h: interface for the BstTree class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_BSTTREE_H__9BEC908A_A229_4564_BD2E_87DF3C63F270__INCLUDED_)
#define AFX_BSTTREE_H__9BEC908A_A229_4564_BD2E_87DF3C63F270__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include "BstTreeNode.h"
#include <fstream>
using std::fstream;
using std::endl;
class CBstTree //BST树类(用来建立倒排文件)
{
public:
CBstTreeNode * root; //根结点指针
int m_nTotalNodes; //结点个数
CBstTree() { root = NULL;m_nTotalNodes=0; } //构造函数
CBstTreeNode * getRoot() { return root; } //返回根结点指针
int getNum() { return m_nTotalNodes; } //返回结点个数
bool insert( const CBstTreeNode & ); //插入新结点
bool RemoveAll(){ //删除树中所有结点
if(root == NULL)
return false;
delete root;
root = NULL;
m_nTotalNodes =0;
return true;
}
bool IsExist(string ); //判断关键码是string的结点是否存在
CBstTreeNode * find(string ); //返回关键词与参数所给关键词相同的树结点的指针
virtual ~CBstTree() { delete root; } //析构函数
void InOrder(CBstTreeNode * root, fstream & out){ //中序遍历树并把所有结点的内容写入文件
if(root!=NULL)
{
InOrder(root->left,out); //访问左子树
Visit(root,out); //访问当前结点
InOrder(root->right,out); //访问右子树
}
}
void Visit(CBstTreeNode * node,fstream & out){ //访问结点,将结点内容输出到文件
out<<endl;
out<<node->Key<<' '<<node->Index.size();//写“关键词 相关文件个数”
for( int i = 0; i < node->Index.size(); i++ ){
CData test = node->Index.at(i);
out<<test; //写“文件名 偏移量”
}
}
};
#endif // !defined(AFX_BSTTREE_H__9BEC908A_A229_4564_BD2E_87DF3C63F270__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -