二叉搜索树
#include <iostream>using namespace std;struct BinSearchNode;typedef struct BinSearchNode *PBinSearchNode;struct BinSearchNode{ int key; PBinSearchNode llink,rlink;};typedef struct BinSearchNode *BinSearchTree;typedef BinSearchTree *PBinSearchTree;int search(PBinSearchTree ptree,int key,PBinSearchNode*position){ PBinSearchNode p,q; p=*ptree;q=p; while(p!=NULL){ q=p; if(p->key==key){*position=p;return 1;} else if(p->key>key)p=p->llink; else p=p->rlink; } *position=q;;return 0;}int insert(PBinSearchTree ptree,int key){ PBinSearchNode p,position; if(search(ptree,key,&position)==1)return 1; p=new BinSearchNode; p->key=key;p->llink=p->rlink=NULL; if(position==NULL)*ptree=p; else if(key<position->key)position->llink=p; else position->rlink=p; return 1;}void pre_order(PBinSearchNode p) { cout<<p->key<<" " ; if(p->llink!=NULL) pre_order(p->llink); if(p->rlink!=NULL) pre_order(p->rlink); }int main(){ PBinSearchTree tree1; tree1=new PBinSearchNode; int key; while(cin>>key) { insert(tree1,key); } pre_order(*tree1); return 0;}
#include <iostream>using namespace std;struct BinSearchNode;typedef struct BinSearchNode *PBinSearchNode;struct BinSearchNode{ int key; PBinSearchNode llink,rlink;};typedef struct BinSearchNode *BinSearchTree;typedef BinSearchTree *PBinSearchTree;int search(PBinSearchTree ptree,int key,PBinSearchNode*position){ PBinSearchNode p,q; p=*ptree;q=p; while(p!=NULL){ q=p; if(p->key==key){*position=p;return 1;} else if(p->key>key)p=p->llink; else p=p->rlink; } *position=q;;return 0;}int insert(PBinSearchTree ptree,int key){ PBinSearchNode p,position; if(search(ptree,key,&position)==1)return 1; p=new BinSearchNode; p->key=key;p->llink=p->rlink=NULL; if(position==NULL)*ptree=p; else if(key<position->key)position->llink=p; else position->rlink=p; return 1;}void pre_order(PBinSearchNode p) { cout<<p->key<<" " ; if(p->llink!=NULL) pre_order(p->llink); if(p->rlink!=NULL) pre_order(p->rlink); }int main(){ PBinSearchTree tree1; tree1=new PBinSearchNode; int key; while(cin>>key) { insert(tree1,key); } pre_order(*tree1); return 0;}