建立一棵二叉排序树

定义 二叉排序树(也称二叉查找树),或者是一棵空的二叉树,或者是具有下列性质的二叉树:
⑴ 若它的左子树不空,则左子树上所有结点的值均小于根结点的值;
⑵ 若它的右子树不空,则右子树上所有结点的值均大于根结点的值;
⑶ 它的左右子树也都是二叉排序树。
中序遍历二叉排序树可以得到一个按关键码的有序数列。
建树 【建立一棵二叉排序树】脱胎于二叉树,区别是每个节点数据要进行比对,再进行插入,小插左,大插右,直接上代码,清楚明白。

#include using namespace std; #define N 100typedefstruct BiTNode { char data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree; BiTree root=NULL; int n,k[N]; void inOrder(BiTree T)//中序遍历 { if(T!=NULL) { inOrder(T->lchild); //左 printf("%d ",T->data); // 根 inOrder(T->rchild); //右 } }void insert(int m) { BiTree p1, p2; if(root==NULL) { root=new BiTNode; root->data=https://www.it610.com/article/m; root->lchild=root->rchild=NULL; } else { p1=root; while(m!=p1->data) { if((mdata) && (p1->lchild!=NULL)) { p1=p1->lchild; } else if((m>p1->data) && (p1->rchild!=NULL)) { p1=p1->rchild; } else if((mdata) && (p1->lchild==NULL)) { p2=new BiTNode; p2->data=https://www.it610.com/article/m; p2->lchild=p2->rchild=NULL; p1->lchild=p2; return; } else if((m>p1->data) && (p1->rchild==NULL)) { p2=new BiTNode; p2->data=https://www.it610.com/article/m; p2->lchild=p2->rchild=NULL; p1->rchild=p2; return; } } } }void create() { cout<<"输入节点数量:"; cin>>n; for(int i=0; i>k[i]; } for(int i=0; i

    推荐阅读