leetcode 102. 二叉树的层次遍历

匿名 (未验证) 提交于 2019-12-03 00:18:01

给定一个二叉树,返回其按层次遍历的节点值。 (即逐层地,从左到右访问所有节点)。

例如:

给定二叉树: [3,9,20,null,null,15,7],

   3    / \   9  20     /  \    15   7

返回其层次遍历结果:

[   [3],   [9,20],   [15,7] ]

˼·:

二叉树的层次遍历通过队列来进行,先将root进队,进入循环。

判断队列是否为空,不为空将此时队列中的元素一个一个出队,同时将子女入队。

这样每次出队的元素都为一个层次中的。

这是广度优先搜索,

深度优先搜索用栈来进行。

代码:

/**  * 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>> vec;         if(root==NULL){             return vec;         }                   queue<TreeNode*> que;         que.push(root);                  while(!que.empty()){             int size=que.size();             vector<int> vec_temp;                          while(size--)             {                 TreeNode* t = que.front();                 vec_temp.push_back(que.front()->val);                 que.pop();                                  if(t->left){                     que.push(t->left);                 }                                   if(t->right){                     que.push(t->right);                 }             }             vec.push_back(vec_temp);         }         return vec;     } };

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!