给出一棵二叉树和一个整数代表树的某层深度。
计算二叉树的某层节点之和。
样例
样例 1:
输入:{1,2,3,4,5,6,7,#,#,8,#,#,#,#,9},2
输出:5
解释:
1
/ \
2 3
/ \ / \
4 5 6 7
/ \
8 9
2+3=5
样例 2:
输入:{1,2,3,4,5,6,7,#,#,8,#,#,#,#,9},3
输出:22
解释:
1
/ \
2 3
/ \ / \
4 5 6 7
/ \
8 9
4+5+6+7=22
/**
* Definition of TreeNode:
* class TreeNode {
* public:
* int val;
* TreeNode *left, *right;
* TreeNode(int val) {
* this->val = val;
* this->left = this->right = NULL;
* }
* }
*/
class Solution {
public:
/**
* @param root: the root of the binary tree
* @param level: the depth of the target level
* @return: An integer
*/
int levelSum(TreeNode * root, int tmplevel) {
// write your code here
vector<vector<int>> result;
if (root == NULL) {
return 0;
}
//if()
if(tmplevel <= 0)
return 0;
queue<TreeNode *> Q;
Q.push(root);
while (!Q.empty()) {
int size = Q.size();
vector<int> level;
for (int i = 0; i < size; i++) {
TreeNode *head = Q.front(); Q.pop();
level.push_back(head->val);
if (head->left != NULL) {
Q.push(head->left);
}
if (head->right != NULL) {
Q.push(head->right);
}
}
result.push_back(level);
}
if(tmplevel > result.size())
return 0;
int sum = 0;
for(int i = 0; i < result[tmplevel-1].size(); i++)
sum += result[tmplevel-1][i];
return sum;
}
};