c语言利用非递归法完成二叉查找树的插入结点操作代码
时间: 2024-10-15 18:16:43 浏览: 23
在C语言中,非递归法通常用于处理二叉搜索树(BST)的插入操作时,避免函数的深度调用,提高性能。下面是一个简单的非递归插入节点到BST的例子:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉查找树结构体
typedef struct Node {
int data;
struct Node* left;
struct Node* right;
} Node;
// 插入节点函数
Node* insert(Node* root, int value) {
if (root == NULL) {
// 如果根节点为空,创建一个新的节点
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = value;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
} else if (value < root->data) {
// 否则,如果新值小于当前节点,向左子树递归插入
root->left = insert(root->left, value);
} else if (value > root->data) {
// 如果新值大于当前节点,向右子树递归插入
root->right = insert(root->right, value);
}
return root; // 返回更新后的根节点
}
// 示例主函数
int main() {
Node* root = NULL;
root = insert(root, 50); // 插入第一个节点
insert(root, 30); // 插入第二个节点
insert(root, 70); // 插入第三个节点
// 打印整个BST验证插入结果
printf("Inserted values in the BST:\n");
inorder_traversal(root);
return 0;
}
// 中序遍历辅助函数
void inorder_traversal(Node* node) {
if (node != NULL) {
inorder_traversal(node->left);
printf("%d ", node->data);
inorder_traversal(node->right);
}
}
阅读全文