102. Binary Tree Level Order Traversal
来源:互联网 发布:淘宝授权怎么弄 编辑:程序博客网 时间:2024/05/17 01:55
102. Binary Tree Level Order Traversal
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]]
题意:逐层打印二叉树上的节点
代码一、采用二叉树的层次遍历的思想进行
vector<vector<int>> levelOrder(TreeNode* root) { //采用的是二叉树的层次遍历思想,其中每一层的数据用一个临时temp的vector<int>来保存 if(NULL == root) return vector<vector<int>>(); queue<TreeNode*> que; que.push(root); int countLenNodes = 1; //记录的是每一层上的节点数 vector<vector<int>> result; vector<int> temp; while(!que.empty()) { TreeNode* tempNode = que.front(); temp.push_back(tempNode->val); que.pop(); countLenNodes--; if(tempNode->left != NULL) que.push(tempNode->left); if(tempNode->right != NULL) que.push(tempNode->right); if(countLenNodes == 0) { result.push_back(temp); temp.resize(0); //或者temp.clear()均可以 countLenNodes = que.size(); } } return result; }方法二、前序递归遍历构建vector
vector<vector<int>> result; void buildVector(TreeNode* root, int depth) { if(NULL == root) return; if(result.size() == depth) //???当开创新的层次的时候,采用该语句进行申请空间 result.push_back(vector<int>()); result[depth].push_back(root->val); buildVector(root->left,depth + 1); buildVector(root->right,depth + 1); } vector<vector<int>> levelOrder(TreeNode* root) { buildVector(root,0); return result; }
方法三、传统的两个队列的解决方案
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; queue<TreeNode*> q; if (root == NULL) { return result; } q.push(root); vector<int> le_temp; while(!q.empty()) { le_temp.clear(); queue<TreeNode*> level; int size = q.size(); for(int i = 0; i < size; ++i) { TreeNode* temp = q.front(); q.pop(); if(temp->left) { level.push(temp->left); } if(temp->right) { level.push(temp->right); } le_temp.push_back(temp->val); } while(!level.empty()) { q.push(level.front()); level.pop(); } result.push_back(le_temp); } return result; } };
0 0
- LeetCode 102. Binary Tree Level Order Traversal
- [LeetCode]102.Binary Tree Level Order Traversal
- [Leetcode] 102. Binary Tree Level Order Traversal
- LeetCode --- 102. Binary Tree Level Order Traversal
- [leetcode] 102.Binary Tree Level Order Traversal
- 102.Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 【leetcode】102. Binary Tree Level Order Traversal
- 102.Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- Leetcode 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal LeetCode
- 102. Binary Tree Level Order Traversal
- [leetcode] 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- 102. Binary Tree Level Order Traversal
- sqlalchemy中hive的url形式
- centos 7.0 怎么启动mysql
- easyui
- java.util.ResourceBundle使用详解
- 记录几个在jvm中频繁用到的参数设置
- 102. Binary Tree Level Order Traversal
- 【计算机操作系统】操作系统--时间片轮转(RR)进程调度算法
- 矩阵、向量求导法则
- Java 位运算
- 字符串“open_door” 转换成 “OpenDoor”、”make_by_id” 转换成 ”MakeById”。
- String "+"的问题
- php学习笔记-数组篇(4)
- hql语句中要注意的几点
- reactos源码下载地址