地址 https://leetcode-cn.com/problems/binary-tree-level-order-traversal/
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / 9 20 / 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ]
解答
遍历树的时候 加上层级计数。 根据层级将指针的值加入到不同的vector中
/** * 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>> vv; void printVector(TreeNode* root,int level) { if(root == NULL) return; if(vv.size() < level+1){ vector<int> v{root->val}; vv.push_back(v); }else if(vv.size() >= level+1){ vv[level].push_back(root->val); } printVector(root->left,level+1); printVector(root->right,level+1); } vector<vector<int>> levelOrder(TreeNode* root) { printVector(root,0); return vv; } };