102.二叉树的层次遍历

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

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

3

/
9 20
/
15 7
返回其层次遍历结果:

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

解题思路:
采用DFS,稍微修改顺序即可。
/**

  • Definition for a binary tree node.
  • struct TreeNode {
  • int val;
    
  • TreeNode *left;
    
  • TreeNode *right;
    
  • TreeNode(int x) : val(x), left(NULL), right(NULL) {}
    
  • };
    */

#define hasLChild(x) (!(x->leftNULL))
#define hasRChild(x) (!(x->right
NULL))
class Solution
{
public:
vector<vector>levelOrder(TreeNode* root)
{
vector<vector>res;
if(root==NULL)return res;
queue<TreeNode*>Q;
TreeNode* node;
vectorres1;
Q.push(root);
while(!Q.empty())
{
int size=Q.size();
res1.clear();
for(int i=1;i<=size;i++)
{
node=Q.front();
res1.push_back(node->val);
if(hasLChild(node)){Q.push(node->left);}
if(hasRChild(node)){Q.push(node->right);}
Q.pop();
}
res.push_back(res1);
}
return res;
}
};

猜你喜欢

转载自blog.csdn.net/weixin_43545400/article/details/84900237