LeetCode OJ--Binary Tree Level Order Traversal
2024-09-30 00:09:40
http://oj.leetcode.com/problems/binary-tree-level-order-traversal/
树的层序遍历,使用队列
由于树不是满的,还要分出每一层来,刚开始给缺少的节点用dummy节点代替,结果超时了。
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > ans;
if(root == NULL)
return ans;
int num = ,num2 = ;
queue<TreeNode *> myQueue;
myQueue.push(root);
TreeNode *nodeFront;
TreeNode *dummy = new TreeNode(-); vector<int> onePiece;
while(!myQueue.empty())
{
nodeFront = myQueue.front();
myQueue.pop();
num--;
if(nodeFront != dummy)
{
onePiece.push_back(nodeFront->val);
if(nodeFront->left)
myQueue.push(nodeFront->left);
else
myQueue.push(dummy);
if(nodeFront->right)
myQueue.push(nodeFront->right);
else
myQueue.push(dummy);
}
else
{
myQueue.push(dummy);
myQueue.push(dummy);
} if(num == )
{
if(onePiece.empty())
break;
ans.push_back(onePiece);
onePiece.clear();
num2 = num2*;
num = num2;
}
}
return ans;
}
改进的话,对缺失的节点进行计数,则计算出下一层应该有多少个节点来,如下。
vector<vector<int> > levelOrder(TreeNode *root) {
vector<vector<int> > ans;
if(root == NULL)
return ans;
int num = ,num2 = ,nullNum = ,nullNumAcc = ;
queue<TreeNode *> myQueue;
myQueue.push(root);
TreeNode *nodeFront; vector<int> onePiece;
while(!myQueue.empty())
{
nodeFront = myQueue.front();
myQueue.pop();
num--; onePiece.push_back(nodeFront->val);
if(nodeFront->left)
myQueue.push(nodeFront->left);
else
nullNum++;
if(nodeFront->right)
myQueue.push(nodeFront->right);
else
nullNum++; if(num == )
{
if(onePiece.empty())
break;
ans.push_back(onePiece);
onePiece.clear();
num2 = num2*;
nullNumAcc = nullNumAcc* + nullNum;
num = num2 - nullNumAcc;
nullNum = ;
}
}
return ans;
}
最新文章
- 聊天气泡 button backgroundImage uiimage 拉伸 stretchableImageWithLeftCapWidth: 方法的使用
- 理解python的with语句
- ios 中直接修改frame里边某个属性的简便方法
- C#后台如何获取客户端访问系统型号
- Nginx安装注意事项
- AndroidManifest.xml
- 洛谷P2015 二叉苹果树
- Progress 自定义(一)-shape
- Ubuntu远程桌面xrdp方法
- Cocos2d-x 3.1.1 学习日志9--一“上一下其乐无穷”游戏开发系列一
- top -Hp pid 显示所有的线程
- paip.oracle10g dmp文件导入总结
- iOS开发实战-时光记账Demo 本地数据库版
- ZoomCharts
- MySQL的binlog及关闭方法
- 使用htpasswd及nginx auth模块对指定页面进行登录验证
- -webkit-line-clamp、-webkit-box-orient vue 打包部署后不起作用??
- 二: drf视图
- (一 ) 天猫精灵接入Home Assistant-服务器搭建
- Metaspace 之一:Metaspace整体介绍(永久代被替换原因、元空间特点、元空间内存查看分析方法)
热门文章
- 【线段树 泰勒展开】Codechef April Challenge 2018 Chef at the Food Fair
- SSH框架面试总结----1
- paper:synthesizable finite state machine design techniques using the new systemverilog 3.0 enhancements 之 FSM Coding Goals
- Linux 安装Nginx+PHP+MySQL教程
- Python3爬虫一之(urllib库)
- LeetCode(292) Nim Game
- seleniumIDE使用
- python-网络编程-02
- TensorFlow TFRecord封装不定长的序列数据(文本)
- 【bzoj2625】[Neerc2009]Inspection 有上下界最小流