用c语言实现二叉树的插入,不使用指针
时间: 2024-02-13 16:07:44 浏览: 27
在C语言中,如果不使用指针,实现二叉树插入操作比较麻烦。因为二叉树的左右子节点是动态分配的,需要使用指针进行操作。如果不使用指针,需要使用数组等数据结构来存储二叉树,这样会比较繁琐。不过,你可以通过结构体内嵌来实现不使用指针的二叉树插入。
具体实现如下:
```c
#include <stdio.h>
#include <stdlib.h>
struct TreeNode {
int val;
struct TreeNode left;
struct TreeNode right;
};
void insert(struct TreeNode *root, int val) {
if (root->val == 0) {
root->val = val;
root->left.val = 0;
root->right.val = 0;
} else {
if (val < root->val) {
insert(&root->left, val);
} else {
insert(&root->right, val);
}
}
}
int main() {
struct TreeNode root;
root.val = 0;
root.left.val = 0;
root.right.val = 0;
insert(&root, 5);
insert(&root, 3);
insert(&root, 7);
printf("%d\n", root.val);
printf("%d\n", root.left.val);
printf("%d\n", root.right.val);
return 0;
}
```
在这个例子中,我们使用结构体内嵌的方式来实现二叉树的插入操作。结构体TreeNode包含一个int类型的val值和两个TreeNode类型的left和right节点,left和right节点也是TreeNode结构体,因此它们又包含一个int类型的val值和两个TreeNode类型的left和right节点。这样就模拟了二叉树的结构。
在插入节点的时候,我们仍然使用递归的方式,如果当前节点为空,就将新节点的值赋给当前节点,并且初始化左右子节点,否则就根据大小关系递归插入左右子树。