using
System;
public
class
GFG{
class
TreeNode
{
public
int
data;
public
TreeNode left, right;
}
static
TreeNode newNode(
int
data)
{
TreeNode Node =
new
TreeNode();
Node.data = data;
Node.left = Node.right =
null
;
return
(Node);
}
static
int
sumofdepth(TreeNode root,
int
d)
{
if
(root ==
null
)
return
0;
return
d + sumofdepth(root.left, d + 1) +
sumofdepth(root.right, d + 1);
}
static
int
sumofallsubtrees(TreeNode root)
{
if
(root ==
null
)
return
0;
return
sumofdepth(root, 0) +
sumofallsubtrees(root.left) +
sumofallsubtrees(root.right);
}
public
static
void
Main(String[] args)
{
TreeNode root = newNode(1);
root.left = newNode(2);
root.right = newNode(3);
root.left.left = newNode(4);
root.left.right = newNode(5);
root.right.left = newNode(6);
root.right.right = newNode(7);
root.left.left.left = newNode(8);
root.left.left.right = newNode(9);
Console.WriteLine(sumofallsubtrees(root));
}
}