⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bsttree.h

📁 此代码运行于visual c++ 6.0的环境下
💻 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 + -