# Augmenting AVL tree to calculate sum of subtree

Suggest a way to augment an AVL tree to support a $$O(\log n)$$ implementation of the function `calculateSum(key)`, which receives a key of a node and returns the sum of its subtree.

I implemented it this way:

``sumSubtree(node):     if node != null:         return sumSubtree(node.left) + sumSubtree(node.right) + node.key     return 0      calculateSum(key):     node = Search(key) // assuming I have a search function     return sumSubtree(node) ``

which solves it in $$O(\log n)$$.

But I read it is possible to maintain the sum during insertion and deletion. And augment an AVL tree this way.

Which solution would be better? Mine, or the other method? Does it matter?