这是一个用先序遍历创建二叉树的函数。你需要在Begin
和End
之间补充代码来完成任务。
以下是一个示例实现:
#include <iostream>
struct BiTreeNode {
char data;
BiTreeNode* left;
BiTreeNode* right;
};
BiTreeNode* CreatBiTree(char* s, int& i, int len) {
if (i >= len || s[i] == '#') { // 如果当前字符为#,表示空节点
i++;
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 preOrder[] = "AB##C##";
int index = 0;
int length = strlen(preOrder);
BiTreeNode* root = CreatBiTree(preOrder, index, length);
// 验证结果,打印二叉树中序遍历结果
std::cout << "Inorder traversal: ";
// 中序遍历输出二叉树
inorderTraversal(root);
std::cout << std::endl;
//释放内存,防止内存泄漏
return 0;
}
请注意,在此示例中,还需定义inorderTraversal()
函数来执行中序遍历以验证结果。
内容由零声教学AI助手提供,问题来源于学员提问