package com.freetymekiyan.algorithms.utils;
import java.security.InvalidParameterException;
import java.util.ArrayDeque;
import java.util.Queue;
/**
* Utility class.
*/
public class Utils {
public static ListNode buildLinkedList(int[] values) {
ListNode head = new ListNode(values[0]);
ListNode cur = head;
for (int i = 1; i < values.length; i++) {
cur.next = new ListNode(values[i]);
cur = cur.next;
}
return head;
}
public static TreeNode buildBinaryTree(Integer[] values) {
if (values == null || values.length == 0) {
throw new InvalidParameterException("values should not be null or empty");
}
TreeNode root = new TreeNode(values[0]);
Queue<TreeNode> queue = new ArrayDeque<>();
queue.offer(root);
int i = 1;
while (!queue.isEmpty() && i < values.length) {
TreeNode node = queue.poll();
if (i < values.length && values[i] != null) {
node.left = new TreeNode(values[i]);
queue.offer(node.left);
}
if (i + 1 < values.length && values[i + 1] != null) {
node.right = new TreeNode(values[i + 1]);
queue.offer(node.right);
}
i += 2;
}
return root;
}
public static class ListNode {
public int val;
public ListNode next;
public ListNode(int x) {
val = x;
}
}
public static class TreeNode {
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int x) {
val = x;
}
}
}