binary-tree-level-order-traversal
来源:互联网 发布:怎么编程app 编辑:程序博客网 时间:2024/06/05 11:44
题目一:
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,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its level order traversal as:
[
[3],
[9,20],
[15,7]
]
代码如下:
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution { public: vector<vector<int> > levelOrder(TreeNode *root) { vector<vector<int>> res; vector<int> layer; if(root==NULL) return res; queue<TreeNode*> que; que.push(root); //下面这两个变量很重要,nowNode指队列中的当前节点,lastNode指队列中的最后一个节点 TreeNode *nowNode=root; TreeNode *lastNode=root; while(!que.empty()) { nowNode=que.front(); que.pop(); layer.push_back(nowNode->val); if(nowNode->left) que.push(nowNode->left); if(nowNode->right) que.push(nowNode->right); //判断一层是否遍历完,相等则说明遍历完成 if(nowNode==lastNode) { res.push_back(layer); lastNode=que.back(); layer.clear(); } } return res; }};
题目二:
Given a binary tree, return the bottom-up level order traversal of its nodes’ values. (ie, from left to right, level by level from leaf to root).
For example:
Given binary tree{3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its bottom-up level order traversal as:
[
[15,7]
[9,20],
[3],
]
代码如下:只需要把上面一题得到的res最后reverse一下就可以了
/** * Definition for binary tree * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */class Solution {public: vector<vector<int> > levelOrderBottom(TreeNode *root) { vector<vector<int>> res; vector<int> layer; if(root==NULL) return res; queue<TreeNode*> que; que.push(root); //下面这两个变量很重要,nowNode指队列中的当前节点,lastNode指队列中的最后一个节点 TreeNode *nowNode=root; TreeNode *lastNode=root; while(!que.empty()) { nowNode=que.front(); que.pop(); layer.push_back(nowNode->val); if(nowNode->left) que.push(nowNode->left); if(nowNode->right) que.push(nowNode->right); //判断一层是否遍历完,相等则说明遍历完成 if(nowNode==lastNode) { res.push_back(layer); lastNode=que.back(); layer.clear(); } } reverse(res.begin(),res.end()); return res; }};
题目三:
Given a binary tree, return the zigzag level order traversal of its nodes’ values. (ie, from left to right, then right to left for the next level and alternate between).
For example:
Given binary tree{3,9,20,#,#,15,7},
3
/ \
9 20
/ \
15 7
return its zigzag level order traversal as:
[
[3],
[20,9],
[15,7]
]
代码如下:也是在第一题答案的最后进行稍微修改得到最后的结果
/**
* Definition for binary tree
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
vector
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- Binary Tree Level Order Traversal
- spring的自定义属性编辑器CustomEditorConfigurer
- MacOS下设置使用MySql数据库
- AspectJ实现AOP(注解方式)
- 记一次数据库datetime类型比较错误
- Adaboost算法详解(haar人脸检测)
- binary-tree-level-order-traversal
- 设计模式-抽象工厂模式(创建型模式)
- Caffe 自定义数据输入层
- Kinect识别右手,模拟点击按钮
- 谈谈你对JVM的理解?
- 计算机视觉 | 复杂环境背景下,车辆识别如何实现
- Spring实战学习笔记——bean的作用域
- Android Studio导入第三方类库、jar包和so库
- Qt鼠标绘制平滑曲线解决方案(2)