4.请给出二叉树排序的插入算法,节点的数据结构如下
typedef structBtNode{
int value;
struct BtNode*lchild, *rchild;
}BtNode;
请实现插入算法
int Insert(BtNode*root, int value);
{
BtNode *prev = NULL, *tmp = NULL;
If (root == NULL) return -1;
while (root != NULL) {
if (value < root->value) {
prev = root;
root = root->lchild;
} else if (value >root->value) {
prev = root;
root = root->rchild;
} else return -1;
}
if (value < prev->value) {
tmp =(BtNode*)malloc(sizeof(BtNode));
tmp->value = value;
tmp->lchild = tmp->rchild =NULL;
prev->lchild = tmp;
} else {
tmp =(BtNode*)malloc(sizeof(BtNode));
tmp->value = value;
tmp->lchild = tmp->rchild = NULL;
prev->rchild = tmp;
}
return 0;
}