如果用递归且不使用二级指针怎么写
时间: 2023-12-04 10:01:43 浏览: 26
如果你想使用递归来构建和输出二叉树,而且不使用二级指针,你可以将节点的指针作为参数传递给递归函数。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义二叉树节点结构体
struct TreeNode {
int val;
struct TreeNode* left;
struct TreeNode* right;
};
// 创建新的二叉树节点
struct TreeNode* createNode(int val) {
struct TreeNode* newNode = (struct TreeNode*)malloc(sizeof(struct TreeNode));
newNode->val = val;
newNode->left = NULL;
newNode->right = NULL;
return newNode;
}
// 输出二叉树的值(前序遍历)
void printTree(struct TreeNode* node) {
if (node == NULL) {
return;
}
printf("%d ", node->val);
printTree(node->left);
printTree(node->right);
}
int main() {
// 构建二叉树
struct TreeNode* root = createNode(1);
root->left = createNode(2);
root->right = createNode(3);
root->left->left = createNode(4);
root->left->right = createNode(5);
// 输出二叉树的值
printf("二叉树的值为:");
printTree(root);
return 0;
}
```
这个示例代码使用递归的方式实现了二叉树的构建和输出。在`printTree`函数中,我们首先输出当前节点的值,然后递归调用`printTree`函数来输出左子树和右子树的值。注意,递归函数的参数是节点的指针,而不是节点的地址。你可以根据需要修改代码以满足特定的要求。