博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode - Binary Tree Level Order Traversal
阅读量:6292 次
发布时间:2019-06-22

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

hot3.png

这题算是树遍历的基础,写这篇博客主要是为了记录两种代码风格的层序遍历。

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).For example:Given binary tree [3,9,20,null,null,15,7],    3   / \  9  20    /  \   15   7return its level order traversal as:[  [3],  [9,20],  [15,7]]

题目链接:

风格一:

记录当前层与下一层的节点数,一个队列保存节点,避免多队列的拷贝。

/** * 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 {public:       vector
> levelOrderBottom(TreeNode* root) { vector
> res; if(!root) return res; vector
vlevel; queue
q; q.push(root); int level1=1,level2=0; while(!q.empty()){ TreeNode* front = q.front(); q.pop(); vlevel.push_back(front->val); if(front->left){ q.push(front->left); ++level2; } if(front->right){ q.push(front->right); ++level2; } if(--level1 == 0){ //one level is over res.push_back(vlevel); level1 = level2;//next level level2=0;//next next level start vlevel.clear(); } } reverse(res.begin(),res.end()); return res; }};

风格二:

/** * 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 {public:    vector
> levelOrder(TreeNode* root) { vector
> ret; if(root == NULL) return ret; queue
Q; Q.push(root); while(!Q.empty()) { queue
Qtmp; vector
Vtmp; while(!Q.empty()) { TreeNode *front = Q.front(); Q.pop(); Vtmp.push_back(front->val); if(front->left != NULL) Qtmp.push(front->left); if(front->right != NULL) Qtmp.push(front->right); } ret.push_back(Vtmp); Q = Qtmp; } return ret; }};

转载于:https://my.oschina.net/Jerrymingzj/blog/803807

你可能感兴趣的文章
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>
写给0-3岁产品经理的12封信(第08篇)——产品运营能力
查看>>
ArcGIS Engine 符号自动化配置工具实现
查看>>
小程序 · 跳转带参数写法,兼容url的出错
查看>>
flutter error
查看>>