二叉树层序遍历递归形式的解决,一般问题都是直接打印遍历的结果,这里要将每一层的结果按照层进行打印,用队列的方式可能存在一些问题。这里采用了递归的方式进行解决。
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] ]
这个问题的解决用到了全局变量,注意书写格式。
代码为 :
/**
* 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>> vi;
void buildTree(TreeNode* node, int depth){
if(node == NULL)
return;
vector<int> vo;
if(vi.size() == depth)
{
vi.push_back(vector<int> {});
}
vi[depth].push_back(node->val);
buildTree(node->left, depth + 1);
buildTree(node->right, depth + 1);
}
vector<vector<int>> levelOrder(TreeNode* root) {
buildTree(root, 0);
return vi;
}
};