這道題太簡單了,相當于基礎的模板題,但凡涉及到層序遍歷一定會用到隊列來實現,其他的倒沒啥好說的,用兩層while
循環來層序遍歷,外層while
循環用于控制訪問二叉樹的每一層,而內層while
循環則負責收割每一層的元素,將其加入到一個一維向量中,當內層while
循環結束時,直接將收割的一維向量加入到二維向量即可。直接把這種套路記住就可以了。
/*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}* TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:vector<vector<int>> levelOrder(TreeNode* root) {vector<vector<int>> result;queue<TreeNode*> My_Queue;//根節點非空則將其加入隊列if(root) My_Queue.push(root);while(!My_Queue.empty()){int size = My_Queue.size();vector<int> temp;while(size > 0){TreeNode* node = My_Queue.front();My_Queue.pop();size--;temp.emplace_back(node -> val);if(node -> left) My_Queue.push(node -> left);if(node -> right) My_Queue.push(node -> right);}result.emplace_back(temp);}return result;}
};