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;
}
遞迴:
??