用C++代码来写 采用二叉链表存储二叉树T,用代码实现二叉树的遍历及遍历算法设计: (1)先序建立二叉树T, 先序建立二叉树序列(一次全部输入):E B C # # D A # G # # F # #
时间: 2024-12-16 18:29:43 浏览: 4
在C++中,我们可以使用结构体表示节点,并通过指针链接形成二叉链表。这里我会提供一个简单的示例,用于实现先序遍历(根-左-右)以及基于输入序列构建二叉树。首先,我们需要定义一个`Node`结构:
```cpp
#include <iostream>
using namespace std;
struct Node {
char data;
Node* left;
Node* right;
Node(char d) : data(d), left(nullptr), right(nullptr) {}
};
```
接下来,我们创建函数用于构建二叉树并进行先序遍历:
```cpp
void buildTree(Node** root, string input) {
int len = input.size();
if (len == 0) return;
Node* newNode = new Node(input[0]);
*root = newNode;
for (int i = 1; i < len; i++) {
if (input[i] == '#') continue; // 如果遇到空格,说明到达叶子节点
char ch = input[i];
int j = i + 1;
while (j < len && input[j] != '#' && input[j] != ' ') {
j++;
}
newNode->left = buildTree(&newNode->left, input.substr(1, j - 1)); // 构建左子树
newNode->right = buildTree(&newNode->right, input.substr(j + 1, len - j - 1)); // 构建右子树
}
return *root;
}
void preOrderTraversal(Node* node) {
if (node != nullptr) {
cout << node->data << " ";
preOrderTraversal(node->left);
preOrderTraversal(node->right);
}
}
```
你可以通过以下步骤使用这个代码:
1. 创建一个`Node`类型的指针,如`Node* root = nullptr`。
2. 调用`buildTree(&root, "E BC # D A # G # F #")`来根据输入构建二叉树。
3. 完成构建后,调用`preOrderTraversal(root)`来进行先序遍历。
阅读全文