编写先序创建二叉树函数
时间: 2024-01-23 15:47:39 浏览: 62
下面是使用递归实现的先序创建二叉树函数:
```c++
#include <iostream>
using namespace std;
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
TreeNode* createTree() {
int val;
cin >> val;
if (val == -1) { // -1 代表空节点
return nullptr;
}
TreeNode* root = new TreeNode(val);
root->left = createTree();
root->right = createTree();
return root;
}
void preorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
int main() {
TreeNode* root = createTree();
cout << "Preorder Traversal: ";
preorderTraversal(root);
cout << endl;
return 0;
}
```
使用示例:
输入:
```
1 2 -1 -1 3 -1 -1
```
输出:
```
Preorder Traversal: 1 2 3
```
解释:
先序遍历顺序为根节点、左子树、右子树,因此先输出根节点的值 1,然后递归处理左子树和右子树。左子树的先序遍历顺序为 2,右子树的先序遍历顺序为 3,因此输出 2 和 3。最终的遍历顺序为 1 2 3。
阅读全文