用前序遍历算法创建二叉树c++
时间: 2024-12-10 15:34:11 浏览: 11
二叉树各种遍历算法的C++实现
在C++中,使用前序遍历(Preorder Traversal)算法创建二叉树通常涉及递归。前序遍历的顺序是根节点 -> 左子树 -> 右子树。以下是创建并打印一棵前序遍历构建的二叉树的基本步骤:
```cpp
#include <iostream>
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 前序遍历创建二叉树函数
TreeNode* createTreePreOrder(int arr[], int start, int end) {
if (start > end)
return nullptr; // 如果数组越界,返回空指针
// 从数组中取出第一个元素作为根节点
TreeNode* root = new TreeNode(arr[start]);
// 创建左子树,处理剩余数组的左半部分
root->left = createTreePreOrder(arr, start + 1, end);
// 创建右子树,处理剩余数组的右半部分
root->right = createTreePreOrder(arr, start + 2, end);
return root;
}
// 打印前序遍历
void printPreOrder(TreeNode* node) {
if (node == nullptr)
return;
std::cout << node->val << " ";
printPreOrder(node->left);
printPreOrder(node->right);
}
int main() {
int arr[] = {1, 2, 3, 4, 5, 6, 7}; // 示例数组
int n = sizeof(arr) / sizeof(arr[0]);
TreeNode* root = createTreePreOrder(arr, 0, n - 1); // 使用前序遍历创建树
if (root) {
std::cout << "Preorder traversal of the created tree is:\n";
printPreOrder(root);
} else {
std::cout << "Failed to create the tree.\n";
}
return 0;
}
阅读全文