练手水题,直接贴代码。快转正面试了,虚啊,鬼晓得BOSS会问点什么。
/** * 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>> results; if(root == NULL) return results; queue<TreeNode*>* currQueue = new queue<TreeNode*>(); queue<TreeNode*>* candidateQueue = new queue<TreeNode*>(); currQueue->push(root); vector<int> levelResult; while(!currQueue->empty()){ TreeNode* currNode = currQueue->front(); currQueue->pop(); levelResult.push_back(currNode->val); if(currNode->left != NULL) candidateQueue->push(currNode->left); if(currNode->right != NULL) candidateQueue->push(currNode->right); if(currQueue->empty()){ //swap curr and candidte results.push_back(levelResult); levelResult.clear(); queue<TreeNode*>* temp = currQueue; currQueue = candidateQueue; candidateQueue = temp; } } return results; } };