###### tags: `LeetCode` `Tree` `Queue` `Medium` # LeetCode #102 [Binary Tree Level Order Traversal](https://leetcode.com/problems/binary-tree-level-order-traversal/) ### (Medium) 給你一個二叉樹,請你返回其按 層序遍歷 得到的節點值。 (即逐層地,從左到右訪問所有節點)。 --- 運用queue加上for迴圈可以一次處理一整層的節點, 當level=q.size()的時候代表到了新的一層了, 此時要幫ans加一個新的vector<int>供下一層的節點插入所用。 要注意佇列的push()跟pop()會及時改變q的大小, 所以在for迴圈中i的初始值要設為q.size(), 終止條件為i>0; 而不是起始條件i=0中止條件i<q.size(), 這樣會被q的大小變動影響。 --- ``` class Solution { public: vector<vector<int>> ans; vector<vector<int>> levelOrder(TreeNode* root) { if(!root)return {}; int level=0; queue<TreeNode*> q; q.push(root); while(!q.empty()){ if(level==ans.size())ans.emplace_back(); for(int i=q.size();i>0;i--){ TreeNode* tmp=q.front();q.pop(); ans[level].push_back(tmp->val); if(tmp->left)q.push(tmp->left); if(tmp->right)q.push(tmp->right); } level++; } return ans; } }; ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up