[LeetCode 129] Sum Root to Leaf Numbers
Import java. util. optional list;/*** Given a binary tree containing digits from 0-9 only, each root-to-leaf path cocould 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. for example, 1/2 3The root-to-leaf path 1-> 2 represents the number 12.The root-to-leaf path 1-> 3 represents the number 13. return the sum = 12 + 13 = 25. **/public class SumRootToLeafNumbers {public class TreeNode {int val; TreeNode left; TreeNode right; TreeNode (int x) {val = x ;}} // recursive version // 109/109 test cases passed. // Status: Accepted // Runtime: 215 MS // Submitted: 0 minutes ago public int sumNumbers (TreeNode root) {return dfs (root, 0 );} public int dfs (TreeNode root, int sum) {if (root = null) return 0; if (root. left = null & root. right = null) return root. val + sum * 10; return dfs (root. left, root. val + sum * 10) + dfs (root. right, root. val + sum * 10);} // hierarchical traversal // 109/109 test cases passed. // Status: Accepted // Runtime: 234 MS // Submitted: 0 minutes ago public int sumNumbers1 (TreeNode root) {int sum = 0; if (root = null) return sum; values list
Queue = new queue list
(); Queue. add (root); while (! Queue. isEmpty () {int levelLen = queue. size (); for (int I = 0; I <levelLen; I ++) {TreeNode node = queue. removeFirst (); if (node. left = null & node. right = null) sum + = node. val; if (node. left! = Null) {node. left. val + = node. val * 10; queue. add (node. left);} if (node. right! = Null) {node. right. val + = node. val * 10; queue. add (node. right) ;}}return sum;} public static void main (String [] args) {// TODO Auto-generated method stub }}