原文题目:
102. Binary Tree Level Order Traversal
107. Binary Tree Level Order Traversal II
读题:
102. 层序遍历二叉树,每一层作为一个数组,从上到下输出
107.层序遍历二叉树,每一层作为一个数组,反过来从下到上输出
两者只有最后一行的存储方式不一致
class Solution(object): def levelOrder(self, root): """ :type root: TreeNode :rtype: List[List[int]] """ if not root: return [] res = [] queue = [root] while queue: level = [] for i in range(len(queue)): node = queue.pop() level.append(node.val) if node.left: queue.insert(0,node.left) if node.right: queue.insert(0,node.right) res.append(level) #102 #res.insert(0,level) #107
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> res; if (NULL == root) return res; queue <TreeNode*> q; q.push(root); while(!q.empty()) { vector <int> oneLevel; int size =q.size(); for (int i = 0; i<size;++i) { TreeNode *node = q.front(); q.pop(); oneLevel.push_back(node->val); if (node->left) q.push(node->left); if (node->right) q.push(node->right); } res.push_back(oneLevel); } //对层次遍历结果进行翻转 //reverse(res.begin(), res.end()); //107则增加这一行 return res; } };