利用二叉树字符创建二叉树的二叉链式存储结构的代码
时间: 2023-11-20 14:05:35 浏览: 256
好的,以下是利用字符创建二叉树的二叉链式存储结构的代码:
```cpp
#include <iostream>
using namespace std;
struct BiTNode {
char data;
BiTNode* lchild;
BiTNode* rchild;
};
void CreateBiTree(BiTNode*& T) {
char ch;
cin >> ch;
if (ch == '#') {
T = NULL;
} else {
T = new BiTNode;
T->data = ch;
CreateBiTree(T->lchild);
CreateBiTree(T->rchild);
}
}
int main() {
BiTNode* T;
CreateBiTree(T);
return 0;
}
```
以上代码实现了创建二叉树并以二叉链式存储结构存储。用户输入二叉树字符,程序将递归创建二叉树,当输入 # 时,表示该结点为空,创建过程结束。
相关问题
利用二叉树字符串创建二叉树的二叉链式存储结构的代码
以下是使用 C++ 语言实现的利用二叉树字符串创建二叉树的二叉链式存储结构代码:
```C++
#include <iostream>
#include <cstring>
using namespace std;
// 定义二叉树结点结构体
struct Node {
char value; // 节点值
Node* left; // 左子树指针
Node* right; // 右子树指针
};
// 创建一个新的节点
Node* createNode(char value) {
Node* node = new Node();
node->value = value;
node->left = NULL;
node->right = NULL;
return node;
}
// 利用二叉树字符串创建二叉树
Node* createBinaryTree(string str) {
Node* root = NULL;
Node* current = NULL;
// 遍历字符串中的每一个字符,创建二叉树
for(int i = 0; i<str.length(); i++){
char c = str[i];
if (c == '(') {
current = current->left ? current->right : current->left;
} else if (c == ')') {
current = current->parent;
} else if (c != ',') {
Node* node = createNode(c);
if (root == NULL) {
root = node;
} else if (current) {
if (!current->left) {
current->left = node;
} else {
current->right = node;
}
}
node->parent = current;
}
}
return root;
}
```
以上代码实现的功能是:根据二叉树字符串创建一个二叉链式存储结构的二叉树,并返回二叉树的根节点。
利用二叉树字符串“(T(A(B(D,E(H(J,K(L,M(,N)))))),C(F,G(,I)))))”创建二叉树的二叉链式存储结构的代码
好的,我理解了你的问题。以下是利用二叉树字符串"(T(A(B(D,E(H(J,K(L,M,N)))))),C(F,G(,I))))"创建二叉树的二叉链式存储结构代码:
```python
class BinaryTreeNode(object):
def __init__(self, value):
self.value = value
self.left_child = None
self.right_child = None
def create_binary_tree(string):
"""
根据输入的字符串创建二叉树,使用二叉链式存储结构。
:param string: 二叉树字符串
:return: 二叉树的根节点
"""
stack = []
for char in string:
if char == ',':
continue
elif char == '(':
stack.append(temp_node)
temp_node = None
elif char == ')':
if len(stack) > 0:
parent_node = stack.pop(-1)
if parent_node.left_child is None:
parent_node.left_child = temp_node
else:
parent_node.right_child = temp_node
temp_node = parent_node
else:
temp_node = BinaryTreeNode(char)
return temp_node
```
希望这个代码能够帮助你!
阅读全文