< Summary

Information
Class: LeetCode.Algorithms.CousinsInBinaryTree2.CousinsInBinaryTree2BreadthFirstSearch
Assembly: LeetCode
File(s): D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\CousinsInBinaryTree2\CousinsInBinaryTree2BreadthFirstSearch.cs
Line coverage
100%
Covered lines: 48
Uncovered lines: 0
Coverable lines: 48
Total lines: 88
Line coverage: 100%
Branch coverage
100%
Covered branches: 20
Total branches: 20
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ReplaceValueInTree(...)100%2020100%

File(s)

D:\a\LeetCode-CS\LeetCode-CS\source\LeetCode\Algorithms\CousinsInBinaryTree2\CousinsInBinaryTree2BreadthFirstSearch.cs

#LineLine coverage
 1// --------------------------------------------------------------------------------
 2// Copyright (C) 2025 Eugene Eremeev (also known as Yevhenii Yeriemeieiv).
 3// All Rights Reserved.
 4// --------------------------------------------------------------------------------
 5// This software is the confidential and proprietary information of Eugene Eremeev
 6// (also known as Yevhenii Yeriemeieiv) ("Confidential Information"). You shall not
 7// disclose such Confidential Information and shall use it only in accordance with
 8// the terms of the license agreement you entered into with Eugene Eremeev (also
 9// known as Yevhenii Yeriemeieiv).
 10// --------------------------------------------------------------------------------
 11
 12using LeetCode.Core.Models;
 13
 14namespace LeetCode.Algorithms.CousinsInBinaryTree2;
 15
 16/// <inheritdoc />
 17public class CousinsInBinaryTree2BreadthFirstSearch : ICousinsInBinaryTree2
 18{
 19    public TreeNode ReplaceValueInTree(TreeNode root)
 220    {
 221        var queue = new Queue<TreeNode>();
 22
 223        queue.Enqueue(root);
 24
 225        var levelSums = new List<int>();
 26
 727        while (queue.Count > 0)
 528        {
 529            var levelSum = 0;
 530            var levelSize = queue.Count;
 31
 2832            for (var i = 0; i < levelSize; i++)
 933            {
 934                var currentNode = queue.Dequeue();
 35
 936                levelSum += currentNode.val;
 37
 938                if (currentNode.left != null)
 339                {
 340                    queue.Enqueue(currentNode.left);
 341                }
 42
 943                if (currentNode.right != null)
 444                {
 445                    queue.Enqueue(currentNode.right);
 446                }
 947            }
 48
 549            levelSums.Add(levelSum);
 550        }
 51
 252        queue.Enqueue(root);
 53
 254        var levelIndex = 1;
 55
 256        root.val = 0;
 57
 758        while (queue.Count > 0)
 559        {
 560            var levelSize = queue.Count;
 61
 2862            for (var i = 0; i < levelSize; i++)
 963            {
 964                var currentNode = queue.Dequeue();
 65
 966                var sum = (currentNode.left?.val ?? 0) + (currentNode.right?.val ?? 0);
 67
 968                if (currentNode.left != null)
 369                {
 370                    currentNode.left.val = levelSums[levelIndex] - sum;
 71
 372                    queue.Enqueue(currentNode.left);
 373                }
 74
 975                if (currentNode.right != null)
 476                {
 477                    currentNode.right.val = levelSums[levelIndex] - sum;
 78
 479                    queue.Enqueue(currentNode.right);
 480                }
 981            }
 82
 583            levelIndex++;
 584        }
 85
 286        return root;
 287    }
 88}