博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】107-Binary Tree Level Order Traversal II
阅读量:4603 次
发布时间:2019-06-09

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

problem

根据题意,需要将每层的节点分别放入数组中,因此需要每层节点的数量。

广度优先搜索算法(Breadth First Search),又叫宽度优先搜索,或横向优先搜索。从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。借助队列数据结构,由于队列是先进先出的顺序,因此可以先将左子树入队,然后再将右子树入队。这样一来,左子树结点就存在队头,可以先被访问到。

code

/** * Definition for a binary tree node. * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {
//BFS.public: vector
> levelOrderBottom(TreeNode* root) { vector
> vvi; queue
q; if(root==NULL) return vvi;// q.push(root); while(!q.empty()) { vector
vi; for(int i=0, n=q.size(); i
left != NULL) q.push(tmp->left); if(tmp->right != NULL) q.push(tmp->right); vi.push_back(tmp->val); } vvi.push_back(vi); } reverse(vvi.begin(), vvi.end()); return vvi; }};
View Code

总结

1. 使用队列的数据结构,记录每层的节点及其数目,队列先进先出,先左后右分别入队列;

2. 头结点的非空判断,以及每层节点的非空判断;

3. 每层节点的数量在处理的过程中会发生变化,需要将每层的节点数目固定赋值给某一变量;

4. 数据结构queue的用法;

参考

1. ;

2. ;

3. ;

 

转载于:https://www.cnblogs.com/happyamyhope/p/10019699.html

你可能感兴趣的文章
servelet跳转页面的路径中一直包含sevelet的解决办法
查看>>
modelform和modelserializer
查看>>
20145201《Java程序设计》第五次实验报告
查看>>
Java 9 正式发布,终落地 Jigsaw 项目
查看>>
NOI-1.1-06-空格分隔输出-体验多个输入输出
查看>>
zookeeper理论
查看>>
python数据持久存储-pickle模块
查看>>
设计稿与物理像素及dpi
查看>>
execl列数据成等差递增递减
查看>>
JSTL标签
查看>>
Python回归分析五部曲(三)—一元非线性回归
查看>>
Struts2转换小程序(Struts2.3.4)
查看>>
java mybatis 框架下多种类型的参数传入到xml问题
查看>>
docker端口映射与容器互联
查看>>
INSERT INTO .. ON DUPLICATE KEY更新多行记录
查看>>
PHP几种抓取网络数据的常见方法
查看>>
GridView的stretchMode属性
查看>>
zoj 1849 (浙江省赛)Attack of Panda Virus
查看>>
MySQL 一个库中表数量是否有限制?
查看>>
图像的平移、旋转及缩放
查看>>