用c++写一个二叉链表创建二叉树的算法
时间: 2024-03-13 15:46:51 浏览: 125
好的,这里给出使用 C++ 实现二叉链表创建二叉树的算法代码:
```c++
#include <iostream>
#include <queue> // 需要用到队列
using namespace std;
// 定义二叉树节点结构体
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 二叉链表创建二叉树算法
TreeNode* createBinaryTree() {
int val;
cin >> val;
if (val == -1) { // 输入 -1 表示该节点为空节点
return NULL;
}
TreeNode* root = new TreeNode(val);
root->left = createBinaryTree(); // 递归创建左子树
root->right = createBinaryTree(); // 递归创建右子树
return root;
}
// 层次遍历二叉树算法
void levelOrderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
queue<TreeNode*> q; // 定义队列
q.push(root); // 根节点入队
while (!q.empty()) {
TreeNode* node = q.front();
q.pop(); // 队首出队
cout << node->val << " "; // 输出节点值
if (node->left != NULL) {
q.push(node->left); // 左子树入队
}
if (node->right != NULL) {
q.push(node->right); // 右子树入队
}
}
}
int main() {
TreeNode* root = createBinaryTree(); // 创建二叉树
levelOrderTraversal(root); // 层次遍历二叉树
return 0;
}
```
运行程序后,输入一串数字,每个数字以空格隔开,-1 表示空节点。例如,输入 `1 2 4 -1 -1 5 -1 -1 3 6 -1 -1 7 -1 -1`,则得到的二叉树如下所示:
```
1
/ \
2 3
/ \ / \
4 5 6 7
```
并且程序会输出二叉树的层次遍历结果:
```
1 2 3 4 5 6 7
```
阅读全文