C++递归构建以二叉链存储的二叉树
时间: 2023-06-10 07:08:13 浏览: 61
二叉树的递归构建是一个常见的操作,可以通过递归的方式来构建以二叉链存储的二叉树。下面是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 二叉树的结构体定义
typedef struct TreeNode {
int val;
struct TreeNode *left;
struct TreeNode *right;
} TreeNode;
// 递归构建二叉树
void createTree(TreeNode **root) {
int val;
scanf("%d", &val);
if (val == -1) { // 输入-1表示该节点为空
*root = NULL;
} else {
*root = (TreeNode *)malloc(sizeof(TreeNode));
(*root)->val = val;
createTree(&((*root)->left)); // 递归构建左子树
createTree(&((*root)->right)); // 递归构建右子树
}
}
int main() {
TreeNode *root = NULL;
printf("请输入二叉树的前序遍历序列:\n");
createTree(&root);
printf("二叉树构建完成\n");
return 0;
}
```
在该示例代码中,我们首先定义了一个二叉树的结构体,其中包含一个节点值和左右子树指针。然后,我们定义了一个递归构建二叉树的函数`createTree`,该函数通过不断输入节点值,并通过递归构建左右子树来构建二叉树。当输入值为-1时,表示该节点为空,直接将该节点指针设为NULL即可。
最后,在主函数中,我们通过调用`createTree`函数来构建二叉树,并输出“二叉树构建完成”的提示信息。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)