【leetcode】Binary Tree Level Order Traversal

/**
 * Definition for binary tree
 * 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) {
        // Note: The Solution object is instantiated only once and is reused by each test case.
        vector<vector<int> >ans;
        if(root==NULL)
            return ans;
            
        vector<int> vec;//每一層的節點放入裏面
        queue<TreeNode *> que;     
        que.push(root);
        int count=1;//上一層的在隊列中的節點數
        while(que.empty()==false)
        {
            vec.clear();
            int nextCount=0;//接下來的下一層的節點數的統計
            for(int i=0;i<count;i++)//彈出上一層的節點進行處理
            {
                TreeNode *curNode=que.front();
                que.pop();
            
                vec.push_back(curNode->val);//
            
                if(curNode->left!=NULL)
                {
                    que.push(curNode->left);
                    nextCount++;
                }
                if(curNode->right!=NULL)
                {
                    que.push(curNode->right);    
                    nextCount++;
                }
            }
            count=nextCount;
            ans.push_back(vec);
        }
        return ans;
    }
};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章