写一段完整代码关于二叉链表垂直输出,能在dev c++上实现
时间: 2024-11-09 16:23:51 浏览: 21
二叉链表的应用c++代码_二叉链表c++代码_
在Dev C++环境中,我们可以编写一个简单的程序来实现二叉树的垂直输出(也称为层次遍历)。这里我们先创建一个二叉树节点结构体,然后使用队列来辅助垂直遍历。以下是一个示例:
```cpp
#include <iostream>
#include <queue>
// 定义二叉树节点结构
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 水平方向打印二叉树
void levelOrder(TreeNode* root) {
if (root == NULL) return;
std::queue<std::pair<TreeNode*, int>> q; // 使用一对树节点和层数作为队列元素
q.push({root, 0});
while (!q.empty()) {
int currentLevel = q.front().second;
for (int i = 0; i < q.size(); ++i) {
TreeNode* node = q.front().first;
std::cout << " Level " << currentLevel << ": ";
std::cout << node->val << " ";
q.pop();
if (node->left) q.push({node->left, currentLevel + 1});
if (node->right) q.push({node->right, currentLevel + 1});
}
std::cout << "\n";
}
}
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);
std::cout << "Vertical Output of the Binary Tree:\n";
levelOrder(root);
delete root;
return 0;
}
```
这个程序会按照从上到下、从左到右的顺序水平地打印出每个层级的节点值。如果你想要在Dev C++环境中运行这段代码,记得创建一个二叉树并将其传入`levelOrder`函数。
阅读全文