[LeetCode] Binary Tree Level Order Traversal

這題還蠻簡單的 我覺得應該放在easy的題目才是XD

整顆Tree的level可以用一個variable來儲存

拜訪該node的時候,因為是從parent往下走一層到該node,所以count++

離開的時候,就是回到該node的parent,往上走一層所以count–

這邊我是用preorder來做traversal的

然後判斷vector<vector<int>> 有沒有這層了,沒有就新增一個vector給他

大概就這樣 蠻簡單derrr

class Solution {
public:
    
    vector<vector<int>> ans;
    int level = 0;
    
    vector<vector<int>> levelOrder(TreeNode* root) {
        
        if(root == NULL)
            return ans;
        else
            preorder(root);
        
        return ans;
    }
    
    void preorder(TreeNode* node)
    {        
        if(node == NULL)
            return;
        
        level++;                
        
        if(ans.size() < level)
            ans.push_back(vector<int>());    
        ans[level-1].push_back(node->val);     
        
        preorder(node->left);                
        preorder(node->right);
        
        level--;
    }
};

 

 

update:

後來想想其實這題應該比較接近BFS的題目,應該用BFS解比較合適