LeetCode -- Path Sum III分析及實(shí)現(xiàn)方法
題目描述:
You are given a binary tree in which each node contains an integer value.Find the number of paths that sum to a given value.The path does not need to start or end at the root or a leaf, but it must go downwards (traveling only from parent nodes to child nodes).The tree has no more than 1,000 nodes and the values are in the range -1,000,000 to 1,000,000.
給定一個(gè)二叉樹(shù),遍歷過(guò)程中收集所有可能路徑的和,找出和等于X的路徑樹(shù)。
思路:
設(shè)當(dāng)前節(jié)點(diǎn)為root,分別收集左右節(jié)點(diǎn)路徑和的集合,merge到當(dāng)前集合中;
將當(dāng)前節(jié)點(diǎn)添加到數(shù)組中,構(gòu)成新的可能路徑。
實(shí)現(xiàn)代碼:
/** * Definition for a binary tree node. * public class TreeNode { * public int val; * public TreeNode left; * public TreeNode right; * public TreeNode(int x) { val = x; } * } */ public class Solution { private int _sum; private int _count; public int PathSum(TreeNode root, int sum) { _count = 0; _sum = sum; Travel(root, new List<int>()); return _count; } private void Travel(TreeNode current, List<int> ret){ if(current == null){ return ; } if(current.val == _sum){ _count ++; } var left = new List<int>(); Travel(current.left, left); var right = new List<int>(); Travel(current.right, right); ret.AddRange(left); ret.AddRange(right); for(var i = 0;i < ret.Count; i++){ ret[i] += current.val; if(ret[i] == _sum){ _count ++; } } ret.Add(current.val); //Console.WriteLine(ret); } }
如有疑問(wèn)請(qǐng)留言或者到本站社區(qū)交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
新聞熱點(diǎn)
疑難解答
圖片精選