二叉树层次遍历,记录层次/每层节点数/每层最左边最右边的节点
发布日期:2022-02-27 02:38:07 浏览次数:41 分类:技术文章

本文共 935 字,大约阅读时间需要 3 分钟。

题目来源:leetcode

层次遍历用队列,但是如何记录层次是一个需要思考的地方。一种方法是提供两个变量记录本层节点数和下层节点数,还有一种很巧妙的方法,记录队列中元素的数量,就是当前层次节点数。

题解:

这道题思路是使用层次遍历,每层最右边一个节点就是右视图的一部分。如果求左视图,就取每层最左边的节点。

class Solution {
public: vector
rightSideView(TreeNode* root) {
if(root==nullptr) return vector
{
}; vector
ans;//记录答案 queue
q;//队列用于层次遍历 q.push(root); while(!q.empty()) {
int size = q.size();//当前层节点的个数! ans.push_back(q.front()->val);//看下面的进队顺序,队列最前面的就是本层最右的元素 while(size--)//遍历当前层的元素! {
TreeNode* temp=q.front(); q.pop(); if(temp->right) q.push(temp->right);//进队语句交换,可以实现 左视图 if(temp->left) q.push(temp->left); } } return ans; } };

参考:@淹死在水里的鱼 https://leetcode-cn.com/problems/binary-tree-right-side-view/comments/

转载地址:https://blog.csdn.net/weixin_43401437/article/details/114895416 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:PCB常用快捷键
下一篇:学习编程的正确姿势

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月02日 15时33分41秒