首页 > 代码库 > 【LeetCode】Binary Tree Level Order Traversal

【LeetCode】Binary Tree Level Order Traversal

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。

可参照Binary Tree Zigzag Level Order Traversal。

/** * Definition for binary tree * struct TreeNode { *     int val; *     TreeNode *left; *     TreeNode *right; *     TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */struct Node{    TreeNode* tree;    int level;    Node(TreeNode* root, int l):tree(root), level(l){}};class Solution {public:    vector<vector<int> > levelOrder(TreeNode *root) {        vector<vector<int> > result;        if(root == NULL)            return result;        int lastLevel = 0;        vector<int> cur;        queue<Node*> q;        Node* rootNode = new Node(root, 0);        q.push(rootNode);        while(!q.empty())        {            Node* front = q.front();            q.pop();            if(front->level > lastLevel)            {                result.push_back(cur);                cur.clear();                lastLevel = front->level;            }            cur.push_back(front->tree->val);            if(front->tree->left)            {                Node* leftNode = new Node(front->tree->left, front->level+1);                q.push(leftNode);            }            if(front->tree->right)            {                Node* rightNode = new Node(front->tree->right, front->level+1);                q.push(rightNode);            }        }        //add last level        result.push_back(cur);        return result;    }};

 

【LeetCode】Binary Tree Level Order Traversal