二叉树的左视图

657 阅读2分钟

给定一个二叉树,打印它的左视图。二叉树的左视图是指当树被从左侧访问时可见的节点集合。任务是完成函数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》杂志上,人们通过强调和回应这个故事来继续对话。