二叉树的括号表示串创建 求代码
时间: 2023-11-19 22:06:02 浏览: 69
二叉树的代码
下面是二叉树的括号表示串创建的代码:
```
typedef struct BiTNode {
char data;
struct BiTNode *lchild, *rchild;
}BiTNode, *BiTree;
// 创建二叉树
void CreateBiTree(BiTree &T) {
char ch;
scanf("%c", &ch);
if (ch == '#') { // 如果读取到#,则表示该节点为空节点
T = NULL;
} else {
T = (BiTree)malloc(sizeof(BiTNode)); // 创建新的节点
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
// 二叉树的括号表示串创建
void CreateBiTreeByStr(BiTree &T, char *str, int &i) {
char ch = str[i++];
if (ch == '#') { // 如果读取到#,则表示该节点为空节点
T = NULL;
} else {
T = (BiTree)malloc(sizeof(BiTNode)); // 创建新的节点
T->data = ch;
CreateBiTreeByStr(T->lchild, str, i);
CreateBiTreeByStr(T->rchild, str, i);
}
}
```
其中,`CreateBiTree()`是按照前序遍历的方式创建二叉树,`CreateBiTreeByStr()`是按照括号表示串创建二叉树。在`CreateBiTreeByStr()`中,`str`是括号表示串,`i`是当前读取到的字符下标,每次读取一个字符,根据字符的不同情况创建新的节点或者设置为空节点。
阅读全文