#include<iostream> using namespace std; //二叉树定义 typedef struct BiTreeNode{ int value; BiTreeNode *lChild,*rChild; }BiTreeNode,*BiTree; //将结点插入为根节点的孩子结点,如果值小于根节点值,则插入到左子树 void InsertBiTree(BiTree *bst,int value) { //递归结束条件,形成叶子结点 if(*bst==NULL) { BiTreeNode *s=(BiTreeNode *)malloc(sizeof(BiTreeNode)); s->value=value; s->lChild=NULL;s->rChild=NULL; *bst=s; } //插入到左子树 else if(value<(*bst)->value) { InsertBiTree(&((*bst)->lChild),value); } //插入到右子树 else if(value>(*bst)->value) { InsertBiTree(&((*bst)->rChild),value); } } //创建一棵二叉排序树 void CreateBiTree(BiTree *root) { int value; *root=NULL; cout<<"请输入一系列正整数,以便构成二叉排序树,以-1结束\n"; cin>>value; while(value!=-1) { InsertBiTree(root,value); cin>>value; } } //中序遍历二叉排序树,得到从小到大的正整数序列 void VisitBiTree(BiTree *root) { if(*root!=NULL) { if((*root)->lChild!=NULL) VisitBiTree(&((*root)->lChild)); cout<<(*root)->value<<"\n"; if((*root)->rChild!=NULL) VisitBiTree(&((*root)->rChild)); } } int main() { bool loop=true; char cmd; while(loop){ BiTree *root=(BiTree *)malloc(sizeof(BiTreeNode)); CreateBiTree(root); VisitBiTree(root); cout<<"继续吗? Y/y \n"; cin>>cmd; loop=(cmd=='y'||cmd=='Y')?true:false; } return 0; }