建立C++代码二叉树,并实现二叉树的遍历,先序遍历采用递归算法实现,层次遍历用非递归算法来实现,可以自己输入字母节点来构成二叉树
时间: 2024-03-10 22:43:52 浏览: 72
好的,以下是用 C++ 实现建立二叉树并遍历的示例代码:
```cpp
#include <iostream>
#include <queue>
using namespace std;
struct TreeNode {
char val;
TreeNode* left;
TreeNode* right;
TreeNode(char v) : val(v), left(nullptr), right(nullptr) {}
};
TreeNode* buildTree() {
char val;
cin >> val;
if (val == '#') {
return nullptr;
}
TreeNode* root = new TreeNode(val);
root->left = buildTree();
root->right = buildTree();
return root;
}
void preorderTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
cout << root->val << " ";
preorderTraversal(root->left);
preorderTraversal(root->right);
}
void levelTraversal(TreeNode* root) {
if (root == nullptr) {
return;
}
queue<TreeNode*> q;
q.push(root);
while (!q.empty()) {
TreeNode* node = q.front();
q.pop();
cout << node->val << " ";
if (node->left != nullptr) {
q.push(node->left);
}
if (node->right != nullptr) {
q.push(node->right);
}
}
}
int main() {
cout << "请输入节点值(输入'#'代表空节点):" << endl;
TreeNode* root = buildTree();
cout << "先序遍历结果:" << endl;
preorderTraversal(root);
cout << endl << "层次遍历结果:" << endl;
levelTraversal(root);
cout << endl;
return 0;
}
```
你可以按照提示输入节点的值,其中 '#' 表示空节点。最终会输出先序遍历和层次遍历的结果。
阅读全文