Binary Tree Level Order Traversal

来源:互联网 发布:java web消息推送框架 编辑:程序博客网 时间:2024/05/05 16:13

题目: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]]

思路:

和之前的zigzag读写树的节点数值方法一样,使用堆栈。用循环的方法,保存根节点。

代码:

/** * 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> >res;        if(root==NULL)  return res;        queue<TreeNode*>q;        q.push(root);        while(!q.empty()){            int n=q.size();            vector<int>tem;            for(int i=0;i<n;i++){                TreeNode* temp=q.front();                tem.push_back(temp->val);                if(temp->left)   q.push(temp->left);                if(temp->right)   q.push(temp->right);                q.pop();            }            res.push_back(tem);        }                return res;    }};


0 0
原创粉丝点击