BST is given.
Calculate and return array with a sum of every level.
For example,
1
2 3
4 5 1 2
Output should be [1, 5, 12].
When traversing the record node in which layer on the line, can be depth first, not necessarily the sequence traversal. It's starting to get complicated.
Private Static classBinarynode {Binarynode left; Binarynode right; intVal; PrivateBinarynode (Binarynode left, Binarynode right,intval) { This. left =Left ; This. right =Right ; This. val =Val; } } Private Static voidLevelsum (Binarynode root, Map<integer, integer> result,intLevel ) { if(Root = =NULL) { return; } intlevelsum; if(Result.containskey (level)) {Levelsum=result.get (level); } Else{levelsum= 0; } levelsum+=Root.val; Result.put (level, levelsum); Levelsum (Root.left, result, level-W); Levelsum (root.right, result, level-W); } Public Static voidMain (String args[]) {Binarynode level2left1=NewBinarynode (NULL,NULL, 4); Binarynode level2right1=NewBinarynode (NULL,NULL, 5); Binarynode Level1left=NewBinarynode (LEVEL2LEFT1, level2right1, 2); Binarynode level2left2=NewBinarynode (NULL,NULL, 1); Binarynode level2right2=NewBinarynode (NULL,NULL, 2); Binarynode Level1right=NewBinarynode (level2left2, Level2right2, 3); Binarynode Root=NewBinarynode (Level1left, Level1right, 1); Map<integer, integer> result =NewHashmap<integer, integer>(); Levelsum (root, result,0); System.out.println (Result.values ()); }
Computes the and of each layer of the binary tree