给定一个二叉树,打印它的左视图。二叉树的左视图是指当树被从左侧访问时可见的节点集合。任务是完成函数leftView(),它接受树的根作为参数。
示例1:左视图。
Input:
例2:
Input:
Output:
任务。
你只需要完成 打印左视图的函数leftView() 即可。驱动代码会自动添加换行符。
预期的时间复杂度。 O(N).
预期的辅助空间。O (树的高度)。
约束条件。
0 <= 节点的数量 <= 1001 <=
节点的数据 <= 1000
那么让我们来理解二叉树的左视图是什么意思?_
看上面的图片,演员可以看到存在于给定树的最左边的节点。
用更简单的话来说,我可以说这是每一级的第一个元素,
0级:1 1
级:2 2
级
:4
3级:8
_
方法: _这里我将使用一个队列来存储二叉树中的元素,使用一个向量数组来存储左视图中的元素。
对于每一层,我将把第一个元素推到向量数组中,并不断推送队列中的元素,直到它变空。
_
现在让我们来看看代码。
// 查找左视图的函数
vector leftView(Node *root)
{
//向量数组来存储左视图的元素
vector answer;
//如果根是NULL,则返回空的向量数组
如果(root==NULL)
{
返回答案。
}
queue<Node*>q; //queue
q.push(root); //在队列中推送根元素
while(!q.empty()) //检查队列是否是空的
{
int n=q.size()。 找到队列的大小,最初它是1
因为它只有一个元素,即根节点。
for(int i=1;i<=n;i++)每当大小被更新时,//就会出现循环。
{
temp 指向队列中最前面的元素
Node* temp = q.front();
//弹出每一层中的第一个元素
q.pop()。
if(i==1)
//推送向量数组中的第一个元素
answer.push_back(temp->data)。
//检查左边的节点是否有一个元素
如果它不是空的,就把这个元素推到队列中。
if(temp->left!=NULL)
q.push(temp->left)。
// 检查右节点是否有一个元素
如果它不是空的,把这个元素推到队列中去
if(temp->right!=NULL)
q.push(temp->right);
}
}
返回答案。 //包含二叉树的左视图的向量
}
代码片段:
希望对你有帮助!继续编写代码!
二叉树的左视图》最初发表在《Nerd For Tech》杂志上,人们通过强调和回应这个故事来继续对话。