Leetcode 102. Binary Tree Level Order Traversal | | Leetcode 102. Binary Tree Level Order Traversal 文章作者:Tyan博客:noahsnail.com | CSDN | 简书 1. Description 2. Solution Version 1 12345678910111213141516171819202122232425262728293031323334353637383940414243444546/** * 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>> result; if(!root) { return result; } queue<TreeNode*> q; q.push(root); traverseLevel(q, result); return result; } private: void traverseLevel(queue<TreeNode*>& q, vector<vector<int>>& result) { vector<int> values; int size = q.size(); while(size) { TreeNode* current = q.front(); q.pop(); if(current) { values.push_back(current->val); if(current->left) { q.push(current->left); } if(current->right) { q.push(current->right); } } size--; } result.push_back(values); if(!q.empty()) { traverseLevel(q, result); } }}; Version 2 123456789101112131415161718192021222324252627282930313233343536373839404142/** * 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>> result; if(!root) { return result; } queue<TreeNode*> q1; queue<TreeNode*> q2; q1.push(root); vector<int> values; while(!q1.empty()) { TreeNode* current = q1.front(); q1.pop(); if(current) { values.push_back(current->val); if(current->left) { q2.push(current->left); } if(current->right) { q2.push(current->right); } } if(q1.empty()) { result.push_back(values); values.clear(); q1 = q2; q2 = {}; } } return result; }}; Reference https://leetcode.com/problems/binary-tree-level-order-traversal/description/ 如果有收获,可以请我喝杯咖啡! 赏 微信打赏 支付宝打赏