//Levelorder
void BS_Tree::Levelorder()
{	
	TreeNode *temp;	
	MyQueue S;
	
	temp = root;
	
	if(temp == NULL){
		printf("Tree is empty.\n");
	}
	else{
		S.AddQ(temp);
		while(true){
			temp = S.DelQ();			
			if(temp != NULL){
				printf("%d ",temp->key);
				if(temp->left != NULL){
					S.AddQ(temp->left);
				}
				if(temp->right != NULL){
					S.AddQ(temp->right);
				}		
			}
			else{
				break;
			}					
		}			
	}
}
//Insert
void BS_Tree::Insert(int key)
{	
	int i;
	
	TreeNode *temp,*newNode;
	MyQueue S;
	newNode = (TreeNode*) malloc(sizeof(TreeNode));
	newNode->key = key;
	newNode->right = NULL;
	newNode->left = NULL;
	
	temp = root;
	
	//root is empty
	if(root == NULL){
		root = newNode;	
	}
	//root isn't empty
	else{		
		S.AddQ(temp);	
		while(true){
			temp = S.DelQ();
			//LeftNode is empty 
			if(temp->left == NULL){
				temp->left = newNode;
				break;
			}
			//RightNode is empty
			else if(temp->right == NULL){
				temp->right = newNode;
				break;
			}
			else{
				S.AddQ(temp->right);
				S.AddQ(temp->left);
				continue;					
			}			
		}		
	}	
}