下面是二叉排序树构建的代码,按照严蔚敏数据结构教材上的方法写的:
#include<iostream>
using namespace std;
struct BiTreeNode{
int data;
BiTreeNode *lchild;
BiTreeNode *rchild;
};
BiTreeNode* p;
//BiTree* SearchBST(BiTree* T, int key)
//{
// if ((!T)||T->data==key)return T;
// else if (key < T->data)return SearchBST(T->lchild, key);
// else return SearchBST(T->lchild, key);
//}
bool SearchBST(BiTreeNode* T, int key, BiTreeNode* f, BiTreeNode*& p)
{
if (!T){p = f; return false;}
else if ( key == T->data ){ p = T; return true; }
else if ( key < T->data )return SearchBST(T->lchild, key, T, p);
else return SearchBST(T->rchild, key, T, p);
}
bool InsertBST(BiTreeNode*& T, int key)
{
if (!SearchBST(T, key, NULL, p)){
BiTreeNode* Node = new BiTreeNode();
Node->data = key;
Node->lchild = Node->rchild = NULL;