int sumTree(TreeNode *root, int val){
     if(root->left == NULL && root->right == NULL) return val * 10 + root->val;
     int ret = 0;
     if(root->left != NULL){
         ret += sumTree(root->left, 10*val + root->val);
     }
     if(root->right != NULL){
         ret += sumTree(root->right, 10*val + root->val);
     }
     return ret;
 }
int sumTree(SegTreeNode* root, int start, int end) {
    if (root->start == start && root->end == end) {
        return root->sum;
    } else {
        int mid = root->start + (root->end - root->start) / 2;
        if (end <= mid) {
            return sumTree(root->left, start, end);
        } else if (start > mid) {
            return sumTree(root->right, start, end);
        }  else {    
            return sumTree(root->left, start, mid) + sumTree(root->right, mid+1, end);
        }
    }
}
示例#3
0
void sumTree(node* t)
{
	if(t==NULL) 
		return ;
	
	sumTree(t->right);
	
	int temp = t->ele;
	t->ele = sum;
	sum += temp;
	
	sumTree(t->left);
	return;
}
        int sumTree(TreeNode *root,int baseSum){
            if(root == NULL) {
                return baseSum;
            } 

            baseSum = baseSum*10 + root->val;
            if(root->left == NULL && root->right == NULL) {
                return baseSum;
            }
            int curAns = 0;
            if(root->left != NULL) {
                curAns+=sumTree(root->left,baseSum);
            }

            if(root->right != NULL) {
                curAns+=sumTree(root->right,baseSum);
            }
            return curAns;
        }
示例#5
0
int main() {
	
	int n;
	scanf("%d",&n);
	node* root = NULL;
	int elem,i;
	for(i=0; i<n; i++)
	{
		scanf("%d",&elem);
		if(root == NULL)
			root = createNode(elem);
		else
			insertInTree(root, elem);
	}
	printf("Printing Tree:\n");
	printTree(root);
	printf("\n");
	printf("After Reversal called:\n");
	sumTree(root);
	printTree(root);
	return 0;
}
 int sumNumbers(TreeNode* root) {
     if(root == NULL) return 0;
     return sumTree(root,0);
 }
int sumRange(struct NumArray* numArray, int i, int j) {
    return sumTree(numArray->root, i, j);
}
 int sumNumbers(TreeNode *root) {
     return sumTree(root,0);    
 }