Given a binary tree, return all root-to-leaf paths.
For example, given the following binary tree:
1/ 2 3 5
All root-to-leaf paths is:
["1->2->5", "1->3"]
Idea: DFS, search to leaf stop, save to Res. I used the StringBuilder, in the back of the time how to return to the previous state did not think out. Reference to a method in the discussion, SetLength. Mactan, almost, look at the answer is much more comfortable.
/*** Definition for a binary tree node. * public class TreeNode {* int val; * TreeNode left; * TreeNode rig Ht * TreeNode (int x) {val = x;} }*/ Public classSolution { PublicList<string>binarytreepaths (TreeNode root) {List<String> res=NewArraylist<string>(); StringBuilder Save=NewStringBuilder (); DPS (Root,res,save); returnRes; } Public voidDPS (TreeNode root, list<string>Res, StringBuilder SB) { if(root==NULL) { return; } intLength=sb.length (); if(root.left==NULL&&root.right==NULL) {sb.append (root.val); Res.add (Sb.tostring ()); Sb.setlength (length); return; } sb.append (Root.val); Sb.append (","); DPS (ROOT.LEFT,RES,SB); DPS (ROOT.RIGHT,RES,SB); Sb.setlength (length); } }
More understanding of the point of backtracking, that is, the condition of return.
257. Binary Tree Paths