LeetCode - Binary Tree Level Order Traversal

Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).

For example:
Given binary tree {3,9,20,#,#,15,7},

    3
   / \
  9  20
    /  \
   15   7

return its level order traversal as:

[
  [3],
  [9,20],
  [15,7]
]
vector<vector<int> > levelOrder(TreeNode *root) {
    // Start typing your C/C++ solution below
    // DO NOT write int main() function
    queue<TreeNode*> q;
    vector<vector<int> > v;
    if (NULL == root) {
        return v;
    }

    q.push(root);
    vector<int> v0;
    v0.push_back(root->val);
    v.push_back(v0);

    while (!q.empty()) {
        queue<TreeNode*> tmp;

        vector<int> vi;
        while (!q.empty()) {
            TreeNode* node = q.front();

            if (node->left != NULL) {
                tmp.push(node->left);
                vi.push_back(node->left->val);
            }

            if (node->right != NULL) {
                tmp.push(node->right);
                vi.push_back(node->right->val);
            }

            q.pop();
        }

        if (vi.size() > 0) {
            v.push_back(vi);
        }
        q = tmp;
    }

    return v;
}
用隊列來保存每層訪問過的節點
發佈了410 篇原創文章 · 獲贊 19 · 訪問量 76萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章