LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
来源:互联网 发布:淘宝卖家擅自取消订单 编辑:程序博客网 时间:2024/05/16 06:30
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 7
return its level order traversal as:
[ [3], [9,20], [15,7]]
题目大意:给出一棵二叉树,对其进行层序遍历并分层输出。
解题思路:有递归和非递归两种解法。递归解法是设置一个depth记录当前深度,设置一个二维数组v保存每一层的节点,向下一层遍历时depth加1;当depth等于二维数组的行数时创建一个新的行。非递归解法用到了队列,层序遍历非常简单,难点在于分层输出。我们可以设置cur表示当前层已遍历的节点数量,last为当前层的所有节点数,当cur == last时表示该层遍历结束。
代码如下:
class Solution {public: vector<vector<int>> levelOrder(TreeNode* root) { if(root == nullptr) return vector<vector<int>>(); // return levelOrderTraversal(root, v); _levelOrderTraversal(root, 0, v); return v; }private: queue<TreeNode*> que; vector<int> vec; vector<vector<int>> v; //非递归版本 void levelOrderTraversal(TreeNode* root, vector<vector<int>>& v) { int cur = 0, last; que.push(root); while(cur < que.size()){ last = que.size(); while(cur < last){ TreeNode* tmp = que.front(); vec.push_back(tmp->val); que.pop(); if(tmp->left) que.push(tmp->left); if(tmp->right) que.push(tmp->right); cur++; } //cur == last该层遍历结束 cur = 0; v.push_back(vec); vec.clear(); } return ; } //递归版本 void _levelOrderTraversal(TreeNode* node, int depth, vector<vector<int>>& v) {if (node == nullptr) return;if (depth == v.size()) v.push_back(vector<int>());v[depth].push_back(node->val);_levelOrderTraversal(node->left, depth + 1, v);_levelOrderTraversal(node->right, depth + 1, v);}};
阅读全文
0 0
- LeetCode | Binary Tree Level Order Traversal(二叉树层序遍历)
- 【LeetCode】Binary Tree Level Order Traversal--(二叉树层序遍历)
- leetcode-Binary Tree Level Order Traversal 二叉树层序遍历
- leetcode:Binary Tree Level Order Traversal 二叉树层序遍历
- 【LeetCode-面试算法经典-Java实现】【102-Binary Tree Level Order Traversal(二叉树层序遍历)】
- LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
- Binary Tree Level Order Traversal(二叉树层序遍历)
- LeetCode | Binary Tree Level Order Traversal II(二叉树层序遍历II)
- LeetCode 103 Binary Tree Zigzag Level Order Traversal(二叉树层序遍历)
- LeetCode 102 Binary Tree Level Order Traversal(二叉树的层级顺序遍历)(*)
- LeetCode 102 Binary Tree Level Order Traversal(二叉树的层次遍历)
- Binary Tree Level Order Traversal 分层遍历二叉树@LeetCode
- Leetcode Binary Tree Level Order Traversal 二叉树分层遍历
- [LeetCode]102. Binary Tree Level Order Traversal--二叉树层序遍历1
- [LeetCode]107. Binary Tree Level Order Traversal II--二叉树层序遍历2
- Binary Tree Level Order Traversal II 二叉树按层遍历(反向输出)@LeetCode
- LeetCode OJ 之 Binary Tree Level Order Traversal (二叉树的层次遍历)
- LeetCode OJ 之 Binary Tree Level Order Traversal II (二叉树的层次遍历-二)
- Stanford Parser 下载使用
- R及Python的数据分析入阶—小白必看
- tomcat7.0和servlet开发问题
- 关于 spring RestTemplate restful
- Codeforces 459D Pashmak and Parmida's problem【树状数组】
- LeetCode 102 Binary Tree Level Order Traversal(二叉树层序遍历)
- 【实践】MAT使用
- 暑假写题第四天
- Java中的printf的用法
- 【工作记录】大北京,我来了~
- 引用包
- 属性动画基本用法
- MATLAB reshape函数
- spring boot打包jar直接运行