[leetcode 102] Binary Tree Level Order Traversal

来源:互联网 发布:善领dsa2016电子眼数据 编辑:程序博客网 时间:2024/06/11 19:51

Question:

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]

]

分析:

层序遍历(用队列),同107题。每个层次结尾用NULL来分清层数。


代码:

/** * Definition for a binary tree node. * 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) {        vector<vector<int>> result;        vector<int> temp;        queue<TreeNode*> que;        if(root == NULL)            return result;        que.push(root);        que.push(NULL);        while(!que.empty()){            TreeNode* node;            node = que.front();            que.pop();            if(node != NULL){                temp.push_back(node->val);                if(node->left != NULL)                    que.push(node->left);                if(node->right != NULL)                    que.push(node->right);            }            else{                result.push_back(temp);                temp.clear();                if(!que.empty())                    que.push(NULL);            }        }        return result;    }};


0 0
原创粉丝点击