Monday, September 14, 2020

[LeetCode] Sum Root to Leaf Numbers

Problem: Given a binary tree containing digits from 0-9 only, each root-to-leaf path could represent a number. An example is the root-to-leaf path 1->2->3 which represents the number 123. Find the total sum of all root-to-leaf numbers.

Example:

Input: [1,2,3]
    1
   / \
  2   3
Output: 25
Explanation:
The root-to-leaf path 1->2 represents the number 12.
The root-to-leaf path 1->3 represents the number 13.
Therefore, sum = 12 + 13 = 25.


Approach: Use Pre-Order traversal.


Implementation in C#:

        public int SumLeafNumbers()

        {

            if (this.Root == null)

            {

                return 0;

            }

            int currNum = 0;

            return this.SumLeafNumbers(this.Root, currNum);

        }


        private int SumLeafNumbers(BinaryTreeNode node, int currNum)

        {

            if (node == null)

            {

                return 0;

            }

            currNum = currNum * 10 + node.Value;

            if (node.LeftNode == null && node.RightNode == null)

            {

                return currNum;

            }

            return this.SumLeafNumbers(node.LeftNode, currNum) + this.SumLeafNumbers(node.RightNode, currNum);

        }


Complexity: O(n)

No comments:

Post a Comment