1. 程式人生 > >資料結構-劍指offer-把二叉樹列印成多行

資料結構-劍指offer-把二叉樹列印成多行

題目:從上到下按層列印二叉樹,同一層結點從左至右輸出。每一層輸出一行。

因為要按層列印,首先想到的是層次遍歷。在二叉樹的深度這道題中,首先應用到了層次遍歷。每一層的節點值存入一個小vector c,再把小vector c存到大vector vec中,列印vec。(題目沒有要求換行,所以不需要考慮換行符)

class Solution {
public:
        vector<vector<int> > Print(TreeNode* pRoot) {
            vector<vector<int>> vec;
            if(pRoot == NULL) 
                return vec;
            queue<TreeNode*> que;
            que.push(pRoot);
            while(!que.empty()){
                int depth = 0;
                int len = que.size();
                vector<int> c;
                while(depth<len){
                    depth++;
                    TreeNode* node = que.front();
                    que.pop();
                    c.push_back(node->val);
                    if(node->left)
                        que.push(node->left);
                    if(node->right)
                        que.push(node->right); 
                }
                vec.push_back(c);
            }
            return vec;
        }
};