下面是二叉排序树构建的代码,按照严蔚敏数据结构教材上的方法写的:
#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; if (!p)T = Node; else if (key < p->data) p->lchild = Node; else p->rchild = Node; return true; } else return false; } void main() { int arr[] = { 45, 12, 53, 3, 37, 100, 24, 61, 90, 78 }; BiTreeNode* head = NULL; for (int i = 0; i < sizeof(arr) / sizeof(int); ++i)InsertBST(head, arr[i]); }