二叉排序树的创建
# include <iostream> using namespace std ; //二叉排序树创建时候并不要求是有序的,如果是有序的将会成单支树(平衡二叉树可以调整) struct BTN { int data ; BTN * lchild ; BTN * rchild ; } ; //二分搜索 BTN * bsts ( BTN * r , int key ) { if ( r == NULL ) { return NULL ; } else { if ( r -> data == key ) { return r ; //返回结点 } else if ( key > r -> data ) { bsts ( r -> rchild , key ) ; //关键字大于中间值,去右子树 } else if ( key < r -> data ) { bsts ( r -> lchild , key ) ; //关键字小于中间值,去左子树 } } } //插入 int bstInsert ( BTN * & r , int ele ) { //这里传指针的别名是因为要对指针进行修改 //如果在改变指针了本身就要加别名,如果改变的是指针指向的位置并不用加别名 //这里每次递归调用传入的是左子树或者右子树,存的是下一个结点的地址,比如传的是右子树(r->rchild),递归过来也就是