C语言用括号法建立二叉树2(2(0,(5,2),1(6,5)),并且打印输出2(2(0,(5,2),1(6,5))
时间: 2024-12-18 10:18:30 浏览: 5
在C语言中,二叉树通常使用结构体来表示节点,每个节点包含一个值以及指向左右孩子的指针。给定的括号表示法描述了一个递归的过程,我们可以按照以下步骤创建并打印这个二叉树:
1. 首先,我们需要定义一个结构体`Node`,代表二叉树的节点,包括整数值`val`和两个指向`Node`类型的指针`left`和`right`。
```c
typedef struct Node {
int val;
struct Node* left;
struct Node* right;
} Node;
```
2. 然后,编写一个函数`createTree`来根据输入的字符串解析并构造二叉树。这里我们假设输入是一个字符串形式的表达式。
```c
Node* createTree(char* str) {
// ... (根据输入字符串str处理逻辑)
}
```
3. 实现`createTree`函数的具体过程:
- 分离根节点的数字。
- 如果左括号,递归创建左子树,并设置左指针。
- 如果右括号,结束当前子树并返回;
- 否则,继续处理剩余的字符。
4. 创建完树后,可以编写一个遍历函数(如前序、中序或后序遍历)来打印整个树。
```c
void printTree(Node* node) {
if (node == NULL) return;
printf("%d ", node->val); // 打印节点值
printTree(node->left); // 左孩子
printTree(node->right); // 右孩子
}
```
5. 最后,在主程序中调用`createTree`函数生成树,并传递给`printTree`函数来打印。
```c
int main() {
char str[] = "2(2(0,(5,2),1(6,5)))";
Node* root = createTree(str);
printTree(root);
return 0;
}
```
当运行上述代码时,它会打印出二叉树的结构:"2 2 0 5 2 1 6 5"。
阅读全文