C++ 使用递归方法对先序字符串ABC##DE#G##F##HI##J##建立链式二叉树。
时间: 2024-04-11 07:24:44 浏览: 116
在C++中,可以使用递归方法来构建链式二叉树。对于给定的先序字符串,可以按照以下步骤进行构建:
1. 定义二叉树节点的结构,包括数据和左右子节点指针。
2. 创建一个全局变量index,用于记录当前处理的字符在先序字符串中的位置。
3. 定义一个递归函数buildTree,该函数接收先序字符串作为参数,并返回构建好的二叉树的根节点。
4. 在buildTree函数中,首先判断当前处理的字符是否为结束符号"#",如果是,则返回空指针。
5. 如果当前字符不是结束符号,则创建一个新的节点,并将当前字符赋值给节点的数据。
6. 递归调用buildTree函数,将左子树赋值给当前节点的左指针。
7. 递归调用buildTree函数,将右子树赋值给当前节点的右指针。
8. 返回当前节点作为子树的根节点。
9. 在主函数中调用buildTree函数,并传入先序字符串作为参数,得到构建好的二叉树的根节点。
下面是一个示例代码实现:
```cpp
#include <iostream>
using namespace std;
struct TreeNode {
char data;
TreeNode* left;
TreeNode* right;
};
int index = 0;
TreeNode* buildTree(string preorder) {
if (preorder[index] == '#') {
index++;
return nullptr;
}
TreeNode* node = new TreeNode;
node->data = preorder[index];
index++;
node->left = buildTree(preorder);
node->right = buildTree(preorder);
return node;
}
void printTree(TreeNode* root) {
if (root == nullptr) {
return;
}
cout << root->data << " ";
printTree(root->left);
printTree(root->right);
}
int main() {
string preorder = "ABC##DE#G##F##HI##J##";
TreeNode* root = buildTree(preorder);
cout << "先序遍历结果:";
printTree(root);
return 0;
}
```
运行以上代码,将会输出先序遍历结果:A B C D E G F H I J。
阅读全文