Binary tree to linked list

透過 level traversal 將節點的值用 linked list串起來

非遞迴:

public List<ListNode> binaryTreeToLists(TreeNode root) {
    // Write your code here
    List<ListNode> results = new ArrayList<>();
    if (root == null) {
        return results;
    }

    Queue<TreeNode> Q = new LinkedList<TreeNode>();
    Q.offer(root);

    while (!Q.isEmpty()) {

        int size = Q.size();
        ListNode dummy = new ListNode(-1);
        ListNode head = new ListNode(-1);
        for (int i = 0; i < size; i++) {
            TreeNode node = Q.poll();
            ListNode list_node = new ListNode(node.val);
            dummy.next = list_node;
            if (i == 0) {
                head = list_node;
            }
            dummy = dummy.next;

            if (node.left != null) {
                Q.offer(node.left);
            }
            if (node.right != null) {
                Q.offer(node.right);
            }
        }
        dummy.next = null;
        results.add(head);
    }

    return results;
}

遞迴:

??

results matching ""

    No results matching ""