根据层序遍历构造二叉树c++
时间: 2023-08-06 18:07:55 浏览: 62
可以使用队列来实现层序遍历构造二叉树的过程,具体步骤如下:
1. 定义一个二叉树节点结构体,包含左右子树指针和节点值。
2. 定义一个队列,将根节点入队。
3. 循环遍历队列,直到队列为空。对于每个节点,从队列中取出,并读入该节点的左右子树的值,如果有子树值,则创建节点并将其添加到队列中。
4. 返回根节点。
下面是C++代码示例:
```c++
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 idx = 0;
TreeNode* root = new TreeNode(nums[idx++]);
queue<TreeNode*> q;
q.push(root);
while (!q.empty() && idx < nums.size()) {
TreeNode* cur = q.front();
q.pop();
if (idx < nums.size()) {
int leftVal = nums[idx++];
if (leftVal != -1) {
cur->left = new TreeNode(leftVal);
q.push(cur->left);
}
}
if (idx < nums.size()) {
int rightVal = nums[idx++];
if (rightVal != -1) {
cur->right = new TreeNode(rightVal);
q.push(cur->right);
}
}
}
return root;
}
```
其中,`nums` 是层序遍历的结果,-1表示该节点为空。函数返回构造好的二叉树的根节点。
阅读全文