c语言数组实现二叉树
时间: 2023-12-16 15:05:08 浏览: 122
使用C语言数组实现二叉树需要使用顺序存储结构。具体实现方法如下:
1.定义一个数组来存储二叉树的节点,数组下标表示节点的编号,节点的值表示节点的值。
2.对于第i个节点,它的左子节点的编号为2*i,右子节点的编号为2*i+1,父节点的编号为i/2。
3.在数组中,如果某个节点没有左子节点或右子节点,则用0表示。
4.对于完全二叉树,可以使用数组来存储,但对于非完全二叉树,使用数组存储会浪费空间。
下面是一个简单的C语言数组实现二叉树的例子:
```c
#include <stdio.h>
#define MAX_SIZE 100
int tree[MAX_SIZE];
// 初始化二叉树
void initTree() {
for (int i = 0; i < MAX_SIZE; i++) {
tree[i] = 0;
}
}
// 插入节点
void insertNode(int value, int index) {
tree[index] = value;
}
// 获取节点值
int getNodeValue(int index) {
return tree[index];
}
// 获取左子节点
int getLeftChild(int index) {
return tree[2 * index];
}
// 获取右子节点
int getRightChild(int index) {
return tree[2 * index + 1];
}
// 获取父节点
int getParent(int index) {
return tree[index / 2];
}
// 遍历二叉树
void traverseTree(int index) {
if (index >= MAX_SIZE || tree[index] == 0) {
return;
}
printf("%d ", tree[index]);
traverseTree(2 * index);
traverseTree(2 * index + 1);
}
int main() {
initTree();
insertNode(1, 1);
insertNode(2, 2);
insertNode(3, 3);
insertNode(4, 4);
insertNode(5, 5);
insertNode(6, 6);
insertNode(7, 7);
printf("节点值为:");
traverseTree(1);
printf("\n");
printf("节点1的左子节点为:%d\n", getLeftChild(1));
printf("节点1的右子节点为:%d\n", getRightChild(1));
printf("节点2的父节点为:%d\n", getParent(2));
return 0;
}
```
阅读全文