It is not difficult to remember when the helper calls to rebuild a list to pass in, or the pointer is passed, each call to modify the same list will be messy (22,23 line)
1 PublicList<list<integer>> pathsum (TreeNode root,intsum) {2list<list<integer>> res =NewArraylist<list<integer>>();3 if(Root = =NULL) {4 returnRes;5 }6Helper (root, sum, 0, Res,NewArraylist<integer>());7 returnRes;8 }9 Ten Private voidHelper (TreeNode root,intSumintCursum, list<list<integer>> Res, list<integer>Curpath) { One if(Root = =NULL) { A return; - } - if(Root.left = =NULL&& Root.right = =NULL) { the if(cursum + Root.val = =sum) { - Curpath.add (root.val); - Res.add (curpath); - } + return; - } + Curpath.add (root.val); AHelper (Root.left, sum, Cursum + root.val, res,NewArraylist<integer>(Curpath)); atHelper (root.right, sum, Cursum + root.val, res,NewArraylist<integer>(Curpath)); -}
113. Path Sum II