C++按照先序遍历创建一棵二叉树
时间: 2024-11-20 11:41:23 浏览: 5
在C++中,我们可以使用递归的方式来按照先序遍历的方式创建一棵二叉树。先序遍历的顺序通常是“根节点 -> 左子树 -> 右子树”。以下是创建一个简单的二叉树结构,并使用先序遍历构建的一个示例:
```cpp
#include <iostream>
// 定义二叉树结点
struct TreeNode {
int val; // 节点值
TreeNode* left; // 左子节点指针
TreeNode* right; // 右子节点指针
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 先序遍历函数
TreeNode* preorderTraversal(TreeNode* root) {
if (root == nullptr) return nullptr; // 如果根节点为空,直接返回
// 先访问根节点
std::cout << root->val << " ";
// 然后递归处理左子树和右子树
TreeNode* left = preorderTraversal(root->left);
TreeNode* right = preorderTraversal(root->right);
return left ? root : right; // 返回非空的子树,结束递归
}
int main() {
// 创建一个例子二叉树
TreeNode* root = new TreeNode(1);
root->left = new TreeNode(2);
root->right = new TreeNode(3);
root->left->left = new TreeNode(4);
root->left->right = new TreeNode(5);
// 使用先序遍历打印树
preorderTraversal(root); // 输出:1 2 4 5 3
return 0;
}
```
在这个例子中,`preorderTraversal`函数会按照先序遍历的顺序打印出树的所有节点。
阅读全文