LintCode - Binary Tree Level Order Traversal
阿新 • • 發佈:2018-11-19
解法一 queue
class Solution { public: vector<vector<int>> levelOrder(TreeNode * root) { queue<TreeNode*> q; vector<vector<int>> res; if(!root) return res; q.push(root); while(!q.empty()){ int n = q.size(); vector<int> temp; for(int i=0;i<n;i++){ TreeNode* node = q.front(); q.pop(); temp.push_back(node->val); if(node->left) q.push(node->left); if(node->right) q.push(node->right); } res.push_back(temp); } return res; } };
解法二 DFS
class Solution { public: vector<vector<int>> levelOrder(TreeNode * root) { vector<vector<int>> res; helper(root, 0, res); return res; } void helper(TreeNode* root, int level, vector<vector<int>>& res){ if(!root) return; if(res.size()<=level){ res.push_back(vector<int>{root->val}); }else{ res[level].push_back(root->val); } helper(root->left, level+1, res); helper(root->right, level+1, res); } };