leet_257. Binary Tree Paths-根到叶子的路径

来源:互联网 发布:在线看熊片的软件 编辑:程序博客网 时间:2024/05/01 06:41

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 List<String> binaryTreePaths(TreeNode root) {        List<String> list = new ArrayList<>();        // <结点,从根到该点的路径信息>        Map<TreeNode, String> map = new HashMap<>();        if(root==null)            return new ArrayList<>();              map.put(root, root.val+"->");        Queue<TreeNode> queue = new LinkedList<>();        queue.offer(root);        while(!queue.isEmpty()){            TreeNode node = queue.poll();            if(node.left!=null){                map.put(node.left, map.get(node)+node.left.val+"->");                queue.offer(node.left);                         }            if(node.right!=null){                map.put(node.right, map.get(node)+node.right.val+"->");                queue.offer(node.right);                            }            // 如果该点是叶子            if(node.left==null && node.right==null)                list.add(map.get(node));        }        for(int i=0;i<list.size();i++){            String s = list.get(i);            list.set(i, s.substring(0, s.length()-2));        }        return list;    }
0 0
原创粉丝点击