LeetCode -- Path Sum III分析及实现方法
LeetCode--PathSumIII分析及实现方法
题目描述:
Youaregivenabinarytreeinwhicheachnodecontainsanintegervalue. Findthenumberofpathsthatsumtoagivenvalue. Thepathdoesnotneedtostartorendattherootoraleaf,butitmustgodownwards(travelingonlyfromparentnodestochildnodes). Thetreehasnomorethan1,000nodesandthevaluesareintherange-1,000,000to1,000,000.
给定一个二叉树,遍历过程中收集所有可能路径的和,找出和等于X的路径树。
思路:
设当前节点为root,分别收集左右节点路径和的集合,merge到当前集合中;
将当前节点添加到数组中,构成新的可能路径。
实现代码:
/** *Definitionforabinarytreenode. *publicclassTreeNode{ *publicintval; *publicTreeNodeleft; *publicTreeNoderight; *publicTreeNode(intx){val=x;} *} */ publicclassSolution{ privateint_sum; privateint_count; publicintPathSum(TreeNoderoot,intsum) { _count=0; _sum=sum; Travel(root,newList()); return_count; } privatevoidTravel(TreeNodecurrent,List ret){ if(current==null){ return; } if(current.val==_sum){ _count++; } varleft=newList (); Travel(current.left,left); varright=newList (); Travel(current.right,right); ret.AddRange(left); ret.AddRange(right); for(vari=0;i 如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!