Convert Binary Tree to Linked Lists by Depth
Given binary tree:
1
/ \
2 3
/
4
return
[
1->null,
2->3->null,
4->null
] Given binary tree:
1
/ \
2 3
/
4
return
[
1->null,
2->3->null,
4->null
] class Solution:
# @param {TreeNode} root the root of binary tree
# @return {ListNode[]} a lists of linked list
def binaryTreeToLists(self, root):
ret = []
if not root:
return ret
queue = collections.deque()
queue.appendleft(root)
while queue:
size = len(queue)
dummy = ListNode(0)
curr = dummy
for i in range(size):
tnode = queue.pop()
curr.next = ListNode(tnode.val)
curr = curr.next
if tnode.left:
queue.appendleft(tnode.left)
if tnode.right:
queue.appendleft(tnode.right)
ret.append(dummy.next)
return retpublic class Solution {
/**
* @param root the root of binary tree
* @return a lists of linked list
*/
public List<ListNode> binaryTreeToLists(TreeNode root) {
List<ListNode> res = new ArrayList<>();
if (root == null) return res;
Deque<TreeNode> queue = new LinkedList<>();
queue.addFirst(root);
while (! queue.isEmpty()) {
int size = queue.size();
ListNode dummy = new ListNode(0);
ListNode prev = dummy;
for (int i = 0; i < size; ++i) {
TreeNode node = queue.removeLast();
prev.next = new ListNode(node.val);
prev = prev.next;
if (node.left != null) queue.addFirst(node.left);
if (node.right != null) queue.addFirst(node.right);
}
res.add(dummy.next);
}
return res;
}
}