请给出几道c++数据结构关于二叉树的前序、中序、后序、层序遍历序列的简答题,并给出答案
时间: 2023-08-25 18:04:39 浏览: 102
二叉树的先序、中序、后序、分层遍历C++实现
4星 · 用户满意度95%
好的,下面是几道关于二叉树遍历的简答题:
1. 二叉树的前序遍历序列为 {1, 2, 4, 5, 3, 6, 7},中序遍历序列为 {4, 2, 5, 1, 6, 3, 7},请构造该二叉树并输出它的后序遍历序列。
答案:该二叉树的结构如下图所示:
```
1
/ \
2 3
/ \ / \
4 5 6 7
```
该二叉树的后序遍历序列为 {4, 5, 2, 6, 7, 3, 1}。
2. 请写出一个递归函数实现二叉树的前序遍历。
答案:二叉树的前序遍历顺序为:根节点 -> 左子树 -> 右子树。递归实现代码如下:
```
void preOrderTraversal(TreeNode* root) {
if (root == nullptr) return;
cout << root->val << " ";
preOrderTraversal(root->left);
preOrderTraversal(root->right);
}
```
3. 请写出一个非递归函数实现二叉树的层序遍历。
答案:层序遍历需要使用队列数据结构,代码如下:
```
void levelOrderTraversal(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) q.push(node->left);
if (node->right) q.push(node->right);
}
}
```
希望这些题目的答案能够帮到你!
阅读全文