以字符串的形式“根 左子树 右子树”定义一棵二叉树时,创建二叉树的算法及主函数
时间: 2024-05-13 09:14:15 浏览: 80
二叉树的创建算法可以使用递归实现,主要思路是根据前序遍历的结果来构建二叉树,具体步骤如下:
1. 首先定义一个结构体来表示二叉树节点,包含一个值域和左右子树指针;
2. 如果遇到空字符串,则返回 NULL;
3. 否则创建一个节点,将当前的值域设置为该节点的值,递归创建左子树和右子树;
4. 返回根节点。
下面是具体的代码实现:
```
#include <iostream>
#include <string>
using namespace std;
struct Node {
char val;
Node* left;
Node* right;
Node(char x) : val(x), left(NULL), right(NULL) {}
};
Node* createTree(string s, int& i) {
if (i >= s.size() || s[i] == ' ') {
return NULL;
}
Node* root = new Node(s[i]);
i++;
root->left = createTree(s, i);
i++;
root->right = createTree(s, i);
return root;
}
Node* createTree(string s) {
int i = 0;
return createTree(s, i);
}
void preorderTraversal(Node* root) {
if (root == NULL) {
return;
}
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
int main() {
string s = "A B D E F C G ";
Node* root = createTree(s);
preorderTraversal(root);
return 0;
}
```
主函数中首先定义了一个二叉树的字符串表示,然后调用 createTree 函数来创建二叉树,最后使用前序遍历函数来验证二叉树是否创建成功。
阅读全文