Короткое замыкание в операционной не работает должным образом, как я думаю. Конечно, я делаю что-то не так, но не могу понять. Пожалуйста помоги! это сводит меня с ума
Я пытаюсь решить проблему слияния двух связанных списков
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var mergeTwoLists = function(l1, l2) {
let root = new ListNode(-1);
function recList(node, l1, l2) {
if(!l1 && !l2) {
return;
}
let smallerNode;
if(!l1) {
smallerNode = l2;
}
if(!l2) {
smallerNode = l1;
}
smallerNode = smallerNode || (l1.val <= l2.val) ? l1 : l2; // this throws an error that cant evaluate .val of null as l1 is null
// however this works just fine
// if(!smallerNode) {
// smallerNode = (l1.val <= l2.val) ? l1 : l2;
// }
node.next = smallerNode;
if(smallerNode === l1) {
l1 = l1.next;
} else {
l2 = l2.next;
}
recList(smallerNode, l1, l2);
}
recList(root, l1, l2);
return root.next;
};