commit 6a8a8d85c3f9104ece8ede5041a2fee2f0977bf6 parent f1178a94f37300eb0d5c63295734453f612754ef Author: AndrewLockVI <andrewlaack1@gmail.com> Date: Sun, 21 May 2023 23:41:15 -0500 Completed average of levels in binary tree using BFS and dart Diffstat:
| A | average-of-levels-in-binary-tree/average-of-levels-in-binary-tree.dart | | | 30 | ++++++++++++++++++++++++++++++ |
1 file changed, 30 insertions(+), 0 deletions(-)
diff --git a/average-of-levels-in-binary-tree/average-of-levels-in-binary-tree.dart b/average-of-levels-in-binary-tree/average-of-levels-in-binary-tree.dart @@ -0,0 +1,30 @@ +//Given a binary tree find the average of each +//level and return the averages as a list. +//To do this I used BFS by adding up all of the values +//on a given level then dividing by the number of nodes. +//I then repeated this for all layers. +//Time: 259ms Beats: 100% +//Memory: 144.2MB Beats: 50% +class Solution { + List<double> averageOfLevels(TreeNode? root) { + List<TreeNode?> queue = []; + queue.add(root); + List<double> medians = []; + while(queue.length != 0){ + int layer_val = 0; + int init_length = queue.length; + for(int i = 0 ; i < init_length ; ++i){ + layer_val += (queue[i]?.val ?? 0); + if(queue[i]?.right != null){ + queue.add(queue[i]?.right); + } + if(queue[i]?.left != null){ + queue.add(queue[i]?.left); + } + } + medians.add(layer_val / init_length); + queue = queue.sublist(init_length); + } + return medians; + } +}