根据给定的框架,你可以使用递归的方式来创建先序遍历的二叉树。以下是一个示例实现:
#include <iostream>
using namespace std;
// 二叉树节点定义
struct BiTreeNode {
char data; // 节点数据
BiTreeNode* left; // 左子节点指针
BiTreeNode* right; // 右子节点指针
};
BiTreeNode* CreatBiTree(char* s, int &i, int len) {
if (i >= len || s[i] == '#') { // 当前字符为空或者为#
i++; // 下标增加1,处理下一个字符
return nullptr; // 返回空指针,表示当前节点为空
}
// 创建当前节点,并赋值为当前字符
BiTreeNode* node = new BiTreeNode;
node->data = s[i++];
// 递归创建左子树和右子树
node->left = CreatBiTree(s, i, len);
node->right = CreatBiTree(s, i, len);
return node; // 返回当前节点
}
int main() {
char s[] = "AB#C##"; // 示例先序遍历字符串
int index = 0;
int length = sizeof(s) - 1; // 减去末尾的'\0'
BiTreeNode* root = CreatBiTree(s, index, length);
/*
创建完毕后可进行其他操作,如输出、遍历等。
这里仅打印了示例中的先序遍历结果。
*/
cout << "先序遍历结果:";
cout << root->data; // 先输出根节点的值
if (root->left) {
cout << root->left->data; // 输出左子节点的值
}
if (root->right) {
cout << root->right->data; // 输出右子节点的值
}
cout << endl;
return 0;
}
该示例通过递归方式实现了根据给定的先序遍历字符串创建二叉树,并打印了先序遍历结果。你可以根据需要进一步修改和完善代码,以满足特定需求。
内容由零声教学AI助手提供,问题来源于学员提问