根据层序遍历构造二叉树c++
时间: 2023-08-06 09:08:37 浏览: 87
verify-complete-binary-tree.rar_verify
以下是根据层序遍历构造二叉树的C++代码:
```c++
#include <iostream>
#include <queue>
using namespace std;
// 二叉树节点的定义
struct TreeNode {
int val;
TreeNode* left;
TreeNode* right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
// 根据层序遍历构造二叉树
TreeNode* createTree(vector<int> nums) {
if (nums.empty()) {
return NULL;
}
int n = nums.size();
queue<TreeNode*> q;
TreeNode* root = new TreeNode(nums[0]);
q.push(root);
int i = 1;
while (!q.empty() && i < n) {
TreeNode* cur = q.front();
q.pop();
if (nums[i] != -1) {
cur->left = new TreeNode(nums[i]);
q.push(cur->left);
}
i++;
if (i < n && nums[i] != -1) {
cur->right = new TreeNode(nums[i]);
q.push(cur->right);
}
i++;
}
return root;
}
// 中序遍历二叉树
void inorderTraversal(TreeNode* root) {
if (root == NULL) {
return;
}
inorderTraversal(root->left);
cout << root->val << " ";
inorderTraversal(root->right);
}
int main() {
vector<int> nums = {3, 9, 20, -1, -1, 15, 7};
TreeNode* root = createTree(nums);
inorderTraversal(root);
return 0;
}
```
其中,`createTree`函数根据层序遍历构造二叉树,`inorderTraversal`函数中序遍历二叉树,`nums`数组表示二叉树的层序遍历结果,-1表示该节点为空。
阅读全文