两个题是一样的。
注意一个细节:if(node->left != NULL) 与 if(!node->left) 不一样,即if(!node->left)中感叹号!的优先级高于->left
class Solution { public: vector<vector<int>> levelOrder(TreeNode* root) { vector<vector<int>> result; if(!root) return result; vector<int> res; queue<TreeNode*> container; container.push(root); int now = 1; int next = 0; while(!container.empty()){ TreeNode* node = container.front(); container.pop(); res.push_back(node->val); now--; if(node->left != NULL){ container.push(node->left); next++; } if(node->right != NULL){ container.push(node->right); next++; } if(now == 0){ now = next; next = 0; result.push_back(res); res.clear(); } } return result; } };