用c++编写一段用中序遍历算法建立一个二叉树的完整代码
时间: 2023-09-10 21:15:40 浏览: 100
下面是用中序遍历算法建立一个二叉树的完整代码:
```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* inorder, int left, int right){
if(left > right) // 递归终止条件
return NULL;
int mid = left + (right - left) / 2; // 取中间元素为根节点
TreeNode* root = new TreeNode(inorder[mid]);
root->left = buildTree(inorder, left, mid - 1); // 构建左子树
root->right = buildTree(inorder, mid + 1, right); // 构建右子树
return root;
}
int main(){
int n;
cout << "请输入二叉树节点个数:" << endl;
cin >> n;
int* inorder = new int[n];
cout << "请输入二叉树的中序遍历序列:" << endl;
for(int i = 0; i < n; i++){
cin >> inorder[i];
}
TreeNode* root = buildTree(inorder, 0, n - 1);
return 0;
}
```
该代码中,使用递归的方式来构建二叉树,递归终止条件是left > right,即没有节点需要构建。每次递归中,取中间元素为根节点,然后递归构建左子树和右子树。最终返回根节点。用户需要输入二叉树节点个数和中序遍历序列,程序会根据中序遍历序列构建对应的二叉树。
阅读全文