题目描述:
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,null,null,15,7]
,
3 / \ 9 20 / \ 15 7
return its level order traversal as:
[ [3], [9,20], [15,7] ]
解题思路:
这题可以利用递归一层一层往下搜索,添加每一层的数据。
代码:
1 /** 2 * Definition for a binary tree node. 3 * struct TreeNode { 4 * int val; 5 * TreeNode *left; 6 * TreeNode *right; 7 * TreeNode(int x) : val(x), left(NULL), right(NULL) {} 8 * }; 9 */ 10 class Solution { 11 public: 12 void select(vector<vector<int>> &ret, TreeNode* root, int level){ 13 if(!root) 14 //节点不存在则返回 15 return; 16 if(ret.size() == level) 17 //加入新的数组 18 ret.push_back(vector<int>(0)); 19 ret[level].push_back(root->val); 20 if(root->left||root->right){ 21 select(ret, root->left, level+1);//向左遍历 22 select(ret, root->right, level+1);//向右遍历 23 } 24 } 25 vector<vector<int>> levelOrder(TreeNode* root) { 26 vector<vector<int>> ret; 27 select(ret, root, 0); 28 return ret; 29 } 30 };