c++建立二叉树并实现遍历,先序采用递归,层次遍历采用非递归并附带实例图片
时间: 2024-03-31 11:38:43 浏览: 68
C++ 数据结构二叉树(前序/中序/后序递归、非递归遍历)
5星 · 资源好评率100%
好的,下面是C++建立二叉树并实现遍历的代码,其中先序遍历采用递归实现,层次遍历采用非递归实现(利用队列实现):
```c++
#include <iostream>
#include <queue>
using namespace std;
// 二叉树结点定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}
};
// 建立二叉树
void buildTree(TreeNode*& root) {
int val;
cin >> val;
if (val == -1) { // -1表示该结点为空结点
root = nullptr;
return;
}
root = new TreeNode(val);
buildTree(root->left);
buildTree(root->right);
}
// 先序遍历(递归)
void preorderTraversal(TreeNode* root) {
if (!root) return;
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
// 层次遍历(非递归)
void levelTraversal(TreeNode* root) {
if (!root) return;
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
cout << node->val << " ";
if (node->left) q.push(node->left);
if (node->right) q.push(node->right);
}
}
int main() {
TreeNode* root;
buildTree(root);
cout << "先序遍历结果:";
preorderTraversal(root);
cout << endl;
cout << "层次遍历结果:";
levelTraversal(root);
cout << endl;
return 0;
}
```
下面是一个建立二叉树的示例图,可以根据图中的输入序列来构建二叉树:
![二叉树示例图](https://img-blog.csdnimg.cn/20210402192547572.png)
阅读全文