以二叉链表示二叉树,建立一棵二叉树
时间: 2023-12-10 22:35:28 浏览: 92
二叉树建立遍历
5星 · 资源好评率100%
以下是以二叉链表示二叉树,建立一棵二叉树的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef char BTDataType;
typedef struct BTNode
{
BTDataType data;
struct BTNode* left;
struct BTNode* right;
}BTNode;
// 创建一个结点
BTNode* buyBtNode(BTDataType data)
{
BTNode* newNode = (BTNode*)malloc(sizeof(BTNode));
newNode->data = data;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 通过前序遍历的数组构建二叉树
BTNode* BinaryTreeCreate(BTDataType* a, int n, int* pi, int size)
{
if (*pi >= n || a[*pi] == '#')
{
return NULL;
}
BTNode* root = buyBtNode(a[*pi]);
++(*pi);
if (*pi < n)
{
root->left = BinaryTreeCreate(a, n, pi, size);
}
if (*pi < n)
{
root->right = BinaryTreeCreate(a, n, pi, size);
}
return root;
}
// 二叉树销毁
void BinaryTreeDestory(BTNode** root)
{
if (*root == NULL)
{
return;
}
BinaryTreeDestory(&((*root)->left));
BinaryTreeDestory(&((*root)->right));
free(*root);
*root = NULL;
}
int main()
{
BTDataType a[] = { 'A', 'B', 'D', '#', '#', 'E', '#', 'H', '#', '#', 'C', 'F', '#', '#', 'G', '#', '#' };
int n = sizeof(a) / sizeof(a[0]);
int i = 0;
BTNode* root = BinaryTreeCreate(a, n, &i, n);
// 对二叉树进行操作
BinaryTreeDestory(&root);
return 0;
}
```
阅读全文