BFS print BT all path from root to leaf

来源:互联网 发布:d3.js 地图轨迹点 编辑:程序博客网 时间:2024/06/11 17:44
public class BFS_RootToLeaf {    public List<String> getPath(TreeNode root) {        List<String> res = new LinkedList<>();        if (root == null) {            return res;        }        Queue<TreeNode> queue = new LinkedList<>();        Queue<StringBuilder> sbQueue = new LinkedList<>();        queue.offer(root);        StringBuilder temp = new StringBuilder();        temp.append(root.val);        sbQueue.offer(temp);        while (!queue.isEmpty()) {            int size = queue.size();            for (int i = 0; i < size; i++) {                TreeNode node = queue.poll();                StringBuilder sb = sbQueue.poll();                if (node.left == null && node.right == null) {                    res.add(sb.toString());                }                if (node.left != null) {                    queue.offer(node.left);                    StringBuilder nsb = new StringBuilder();                    nsb.append(sb.toString() + "->" + node.left.val);                    sbQueue.offer(nsb);                }                if (node.right != null) {                    queue.offer(node.right);                    StringBuilder nsb = new StringBuilder();                    nsb.append(sb.toString() + "->" + node.right.val);                    sbQueue.offer(nsb);                }            }        }        return res;    }    public static void main(String[] args) {        TreeNode root = new TreeNode(1);        TreeNode node2 = new TreeNode(2);        TreeNode node3 = new TreeNode(3);        TreeNode node4 = new TreeNode(4);        TreeNode node5 = new TreeNode(5);        root.left = node2;        root.right = node3;        node3.left = node4;        node3.right = node5;        BFS_RootToLeaf sol = new BFS_RootToLeaf();        List<String> results = sol.getPath(root);        for (String result : results) {            System.out.println(result);        }    }}

0 0
原创粉丝点击