c++ 数组建立二叉树
时间: 2023-11-12 07:08:37 浏览: 175
数组建立二叉树的方法是将二叉树按照完全二叉树的形式存储在数组中。具体步骤如下:
1. 将二叉树的根节点存放在数组的第一个位置,即a[1]。
2. 对于任意一个节点i,其左子节点的位置为2*i,右子节点的位置为2*i+1。
3. 若节点i的位置为j,则其父节点的位置为j/2(向下取整)。
4. 从第二个位置开始,依次输入二叉树的节点,若节点不存在则输入0。
例如,以下二叉树:
```
1
/ \
2 3
/ \ / \
4 5 6 7
```
可以用数组表示为:
```
a[1] = 1
a[2] = 2
a[3] = 3
a[4] = 4
a[5] = 5
a[6] = 6
a[7] = 7
```
其中,a[1]为根节点,a[2]和a[3]为其左右子节点,a[4]和a[5]为节点2的左右子节点,a[6]和a[7]为节点3的左右子节点。
建立二叉树的代码示例:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
TreeNode *buildTree(int *a, int n, int i) {
if (i > n || a[i] == 0) { // 超出数组范围或节点为空
return NULL;
}
TreeNode *root = (TreeNode*)malloc(sizeof(TreeNode));
root->val = a[i];
root->left = buildTree(a, n, 2*i);
root->right = buildTree(a, n, 2*i+1);
return root;
}
int main() {
int a[] = {0, 1, 2, 3, 4, 5, 6, 7};
int n = sizeof(a) / sizeof(int) - 1;
TreeNode *root = buildTree(a, n, 1);
return 0;
}
```
其中,buildTree函数用于建立二叉树,参数a为表示二叉树的数组,n为数组长度,i为当前节点在数组中的位置。函数会根据数组中的数值创建节点,并递归创建其左右子树。最后返回根节点。在主函数中,先计算数组长度n,然后调用buildTree函数建立二叉树。
阅读全文