LeetCode - Binary Tree Level Order Traversal
来源:互联网 发布:java服务器高并发 编辑:程序博客网 时间:2024/06/05 11:45
这题算是树遍历的基础,写这篇博客主要是为了记录两种代码风格的层序遍历。
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]]
题目链接: https://leetcode.com/problems/binary-tree-level-order-traversal/
风格一:
记录当前层与下一层的节点数,一个队列保存节点,避免多队列的拷贝。
/** * 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<vector<int>> levelOrderBottom(TreeNode* root) { vector<vector<int>> res; if(!root) return res; vector<int> vlevel; queue<TreeNode*> 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<vector<int>> levelOrder(TreeNode* root) { vector<vector<int> > ret; if(root == NULL) return ret; queue<TreeNode *> Q; Q.push(root); while(!Q.empty()) { queue<TreeNode *> Qtmp; vector<int> 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; }};
0 0
- LeetCode[Tree]: Binary Tree Level Order Traversal
- *(leetcode) Binary Tree Level Order Traversal (tree)
- [leetcode][tree] Binary Tree Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal
- LeetCode: Binary Tree Zigzag Level Order Traversal
- LeetCode: Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Level Order Traversal
- [LeetCode]Binary Tree Level Order Traversal II
- [LeetCode]Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- LeetCode Binary Tree Zigzag Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal
- [Leetcode] Binary Tree Level Order Traversal II
- [Leetcode] Binary Tree Zigzag Level Order Traversal
- Leetcode: Binary Tree Zigzag Level Order Traversal
- LeetCode Binary Tree Level Order Traversal
- LeetCode Binary Tree Level Order Traversal II
- Ajax的属性方法事件以及简单案例
- 主席树 (函数式线段树)
- Matlab删除矩阵的一行或一列以及批量注释
- [python小工具]加减法出题器
- js 内存泄漏
- LeetCode - Binary Tree Level Order Traversal
- Mongo配置成系统服务
- addrules 创建css
- CUDA入门(二)cuda编程的基本知识与第一个cuda程序
- 资料库:用CSDN-markdown编辑器写博客
- 归并排序
- [Leetcode]345. Reverse Vowels of a String
- js项目实战(弹性预算规则)
- HttpClient+Gson解析中国天气网的天气预报信息