采用递归方法建立一颗含有n个节点的二叉树,采用二叉链表存储
时间: 2024-05-16 11:18:38 浏览: 56
递归的方式创建二叉树
5星 · 资源好评率100%
二叉树的递归建立方法是:先建立根节点,再递归地建立左子树和右子树。具体实现过程如下:
1. 定义二叉树结构体和节点结构体:
```
typedef struct BiTNode {
char data; // 节点数据
struct BiTNode *lchild; // 左子树指针
struct BiTNode *rchild; // 右子树指针
} BiTNode, *BiTree;
```
2. 编写递归函数 `createBiTree(int n)`,其中 `n` 表示当前需要建立的节点数目。若 `n == 0`,返回 `NULL`,否则依次建立根节点、左子树和右子树:
```
BiTree createBiTree(int n) {
char data;
scanf("%c", &data);
getchar(); // 读取换行符
if (data == '#') { // 如果输入的是 #,表示该节点为空
return NULL;
}
BiTree root = (BiTree) malloc(sizeof(BiTNode));
root->data = data;
root->lchild = createBiTree(n - 1);
root->rchild = createBiTree(n - 1);
return root;
}
```
3. 在 `main` 函数中调用 `createBiTree(n)` 建立一颗含有 `n` 个节点的二叉树:
```
int main() {
int n;
scanf("%d", &n);
getchar(); // 读取换行符
BiTree root = createBiTree(n);
return 0;
}
```
完整代码如下:
阅读全文