#include<iostream>using namespace std;struct TreeNode{ int val; TreeNode* left; TreeNode* right; TreeNode(int v): val(v), left(NULL), right(NULL) {}};TreeNode* buildTree(){ int val; cin >> val; if(val == -1) // 空节点 return NULL; TreeNode* root = new TreeNode(val); root->left = buildTree(); root->right = buildTree(); return root;}int main(){ cout << "请输入二叉树的先序遍历序列(空节点用-1表示):" << endl; TreeNode* root = buildTree(); return 0;}用中序遍历该二叉树
时间: 2024-01-24 08:02:57 浏览: 159
使用include <iostream>时一定要加using namespace std
你可以使用递归的方式来中序遍历二叉树,下面是完整代码:
```c++
#include<iostream>
using namespace std;
struct TreeNode{
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int v): val(v), left(NULL), right(NULL) {}
};
TreeNode* buildTree(){
int val;
cin >> val;
if(val == -1) // 空节点
return NULL;
TreeNode* root = new TreeNode(val);
root->left = buildTree();
root->right = buildTree();
return root;
}
void inorderTraversal(TreeNode* root){
if(root == NULL)
return;
inorderTraversal(root->left); // 中序遍历左子树
cout << root->val << " "; // 输出当前节点
inorderTraversal(root->right); // 中序遍历右子树
}
int main(){
cout << "请输入二叉树的先序遍历序列(空节点用-1表示):" << endl;
TreeNode* root = buildTree();
cout << "中序遍历结果为:" << endl;
inorderTraversal(root);
return 0;
}
```
该代码中,在构建二叉树的基础上,使用递归的方式来中序遍历二叉树。递归终止条件是节点为空,即返回NULL。每次递归中,先中序遍历左子树,然后输出当前节点,最后中序遍历右子树。用户需要输入先序遍历序列来构建二叉树,程序会输出对应的中序遍历结果。
阅读全文