創建二叉搜索樹仍是比較容易的,通常是給定無序或者先序遍歷的數列,根據數字大小來安排位置。node
/*示例中的二叉樹採用鏈式存儲*/ #include<iostream> #include<queue> using namespace std; typedef struct node* BT; struct node{ int data=0; BT LChild=NULL,RChild=NULL; }; BT BuildBST(BT t,int num);//創建二叉搜索樹 void LevelTraversal(BT t);//層序遍歷,用來驗證BST是否建立成功 int main() { int N; scanf("%d",&N); BT tree=NULL; for(int i=0;i<N;i++){ int tmp; scanf("%d",&tmp); tree=BuildBST(tree,tmp); } LevelTraversal(tree); return 0; } BT BuildBST(BT t,int num) { if(t==NULL){ t=new node(); t->data=num; } else{ if(num<t->data) t->LChild=BuildBST(t->LChild,num); else t->RChild=BuildBST(t->RChild,num); } return t; } void LevelTraversal(BT t) { if(t!=NULL){ queue<BT> Q; Q.push(t); while(!Q.empty()){ BT parent=Q.front(); printf("%d ",parent->data); Q.pop(); if(parent->LChild) Q.push(parent->LChild); if(parent->RChild) Q.push(parent->RChild); } } }