Binary Tree Paths

来源:互联网 发布:dvd播放软件 tn 编辑:程序博客网 时间:2024/06/05 12:42

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 are:

["1->2->5", "1->3"]
public class Solution {    public List<String> binaryTreePaths(TreeNode root) {         List<String> res=new ArrayList<String>();            if(root==null) return res;            StringBuilder temp=new StringBuilder("");            if(root.left==null && root.right==null)                { res.add(String.valueOf(root.val));                  return res;                }                getPath(root,temp,res);            return res;    }    public void getPath(TreeNode root,StringBuilder temp,List<String> res)    {       if(root==null) return;            if(root.left==null && root.right==null)            {                temp.append("->"+String.valueOf(root.val)) ;                res.add(new String(temp.toString()));                //将路径加入结果集中之后,删除叶节点,返回上一层父节点                temp.delete(temp.toString().lastIndexOf("->"),temp.length());                return ;            }            if(temp.toString().equals(""))            {                temp.append(String.valueOf(root.val));            }else {                temp.append("->"+String.valueOf(root.val));            }          if(root.left!=null) getPath(root.left,temp,res);           if(root.right!=null) getPath(root.right,temp,res);          //左右两边都遍历完了,那么当前结点就可以删除了          if(temp.toString().lastIndexOf("->")!=-1)            temp.delete(temp.toString().lastIndexOf("->"),temp.length());          else temp.delete(0,temp.length());    }}
0 0
原创粉丝点击