c语言CreateBTree(BTNode *&bt,char *str)代码
时间: 2023-08-07 21:04:59 浏览: 169
下面是 C 语言实现的 CreateBTree 函数代码,可以根据一个字符串 str 创建一棵二叉树:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct BTNode {
char data;
struct BTNode *lchild, *rchild;
} BTNode;
void CreateBTree(BTNode *&bt, char *str) {
BTNode *st[100], *p;
int top = -1, k, j = 0;
char ch;
bt = NULL;
ch = str[j];
while (ch != '\0') {
switch(ch) {
case '(':
top++;
st[top] = p;
k = 1;
break;
case ')':
top--;
break;
case ',':
k = 2;
break;
default:
p = (BTNode *)malloc(sizeof(BTNode));
p->data = ch;
p->lchild = p->rchild = NULL;
if (bt == NULL) {
bt = p;
} else {
switch(k) {
case 1:
st[top]->lchild = p;
break;
case 2:
st[top]->rchild = p;
break;
}
}
}
j++;
ch = str[j];
}
}
```
函数的参数包括一棵二叉树 BTNode *&bt 和一个字符串 str。函数中使用了堆栈 st 来保存节点,堆栈中存储的是 BTNode 类型的指针。代码中使用了 switch 语句来处理字符串中的每个字符,根据不同的字符进行不同的操作。函数会根据字符串中的括号和逗号来构建二叉树的结构,最终返回构建好的二叉树。
阅读全文