二叉排序树插入的非递归
时间: 2023-12-05 15:41:19 浏览: 131
二叉排序树插入的非递归算法可以通过循环实现。具体步骤如下:
1. 如果根节点为空,则将新节点作为根节点插入。
2. 否则,从根节点开始遍历二叉排序树,直到找到一个空节点为止。
3. 如果新节点的值小于当前节点的值,则将新节点插入到当前节点的左子树中。
4. 如果新节点的值大于当前节点的值,则将新节点插入到当前节点的右子树中。
5. 如果新节点的值等于当前节点的值,则不进行插入操作。
下面是一个示例代码:
```c
void insertBST(BSTree &T, ElemType key) {
BSTNode *p = T, *prev = NULL;
while (p != NULL) {
prev = p;
if (key < p->key) {
p = p->lchild;
} else if (key > p->key) {
p = p->rchild;
} else {
return; // 如果已经存在相同的节点,则不进行插入操作
}
}
BSTNode *newNode = (BSTNode*)malloc(sizeof(BSTNode));
newNode->key = key;
newNode->lchild = newNode->rchild = NULL;
if (prev == NULL) {
T = newNode; // 如果根节点为空,则将新节点作为根节点插入
} else if (key < prev->key) {
prev->lchild = newNode; // 插入到左子树中
} else {
prev->rchild = newNode; // 插入到右子树中
}
}
```
阅读全文