首页 > 代码库 > 用二叉链表实现二叉查找树(二)

用二叉链表实现二叉查找树(二)

/*
	二叉查找树的链表实现:
	以及三种遍历方式,删除节点;
	查找节点;
	author:天下无双
	Date:2014-5-28
	Version:3.0
*/
#include <iostream>
#include <string>
typedef int T;//树内节点的数据类型
using namespace std;
class BiTree
{
private:
	struct BiNode{
		T data;
		BiNode *lchild,*rchild;
		BiNode(T d){
			data=http://www.mamicode.com/d;>
感觉对于递归中的return还是有点不太清晰。
什么时候该用,什么时候不该用也不太清晰。
测试代码
<pre name="code" class="cpp">#include "bit4.cpp"
int main()
{
	
	BiTree b;
	//b.addBiNode(&b.root,50);//设立根节点值//二级指针写法
	b.addBiNode(b.getRoot(),50);//指针的引用写法
	int i;
	int arr[9]={30,40,35,27,100,90,110,95,-999};
	for(int j=0;j<9;j++)
	{
		i=arr[j];
		if(i==-999)
			break;
		b.addBiNode(b.getRoot(),i);
	}
	b.Traverse(b.getPtrToRoot(),"PreOrderTraverse");
	b.Traverse(b.getPtrToRoot(),"InOrderTraverse");
	b.Traverse(b.getPtrToRoot(),"PostOrderTraverse");
	while(true)
	{
	int k;
	cout<<"\n输入要查找的值:"<<endl;
	cin>>k;
	if(b.Search(b.getRoot(),k))
		cout<<"OK"<<endl;
	else
		cout<<"NO"<<endl;
	}
	cin.get();
	system("pause");
	return 0;
}