根据给定的代码框架,我们可以完成二叉树的创建和中序遍历。以下是修改后的代码:
#include "binary_tree.h"
BiTreeNode* CreatBiTree(char* s, int &i, int len)
{
if (i >= len || s[i] == '#') // 遇到空节点或遍历结束时返回NULL
{
i++; // 更新下标位置
return NULL;
}
BiTreeNode* node = new BiTreeNode(s[i]); // 创建当前节点
i++; // 更新下标位置
node->lchild = CreatBiTree(s, i, len); // 递归创建左子树
node->rchild = CreatBiTree(s, i, len); // 递归创建右子树
return node; // 返回当前节点
}
void InOrder(BiTreeNode* root)
{
if (root == NULL)
return;
InOrder(root->lchild); // 中序遍历左子树
cout << root->data; // 输出当前节点数据
InOrder(root->rchild); // 中序遍历右子树
}
假设先序遍历字符串为”AB##C#D###“,我们可以按照以下方式调用上述函数:
int main()
{
char str[] = "AB##C#D###";
int index = 0;
BiTreeNode* root = CreatBiTree(str, index, strlen(str));
InOrder(root);
return 0;
}
执行以上代码将输出中序遍历结果:”BACD”。
内容由零声教学AI助手提供,问题来源于学员提问