103.(102) 二叉树的层序遍历

    技术2022-07-13  95

    题目描述:

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

    示例: 二叉树:[3,9,20,null,null,15,7],

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

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

    代码:

    /** * 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; vector<int>lev; if(root==NULL) return res; queue<TreeNode*> q; TreeNode*temp; TreeNode *tab=new TreeNode();//作为一个标记,划分每一层 q.push(root); q.push(tab); while(q.back()!=q.front()) { while(q.front()!=tab) { temp=q.front(); lev.push_back(temp->val); if(temp->left!=NULL) q.push(temp->left); if(temp->right!=NULL) q.push(temp->right); q.pop(); } res.push_back(lev); lev.clear(); q.pop(); q.push(tab); } delete tab; return res; } };

    执行效率:

    执行用时:8 ms, 在所有 C++ 提交中击败了46.00%的用户

    内存消耗:11.6 MB, 在所有 C++ 提交中击败了100.00%的用户

    Processed: 0.012, SQL: 9