2. recursive Linkded List
12961 단어 DataStructuresDataStructures
1. Linked List 재귀 구현
class Node {
constructor(val) {
this.val = val;
this.next = null;
}
}
class LinkedList {
constructor() {
this.head = null;
}
append(val) {
if(this.head === null) {
this.head = new Node(val);
return;
}
this._append(val, this.head)
}
_append(val, curr) {
if(curr.next === null) {
curr.next = new Node(val);
return;
}
this._append(val, curr.next);
}
print() {
const output = this._print(this.head);
console.log(output);
}
_print(curr) {
if(curr === null) return '';
return curr.val + this._print(curr.next);
}
contains(target) {
return this._contains(target, this.head);
}
_contains(target, curr) {
if(curr === null) return false;
if(curr.val === target) return true;
return this._contains(target, curr.next);
}
}
const list = new LinkedList();
// list.append('a');
// list.append('b');
// list.append('c');
// console.log(list.head);
// list.print()
// console.log(list.contains('a')) // true
// console.log(list.contains('d')) // false
2. Linked List Sum
While문 / 재귀
const list = new LinkedList();
list.append(11);
list.append(10);
list.append(12);
const sumList = (head) => {
let curr = head;
let sum = 0;
while(curr !== null) {
sum += curr.val;
curr = curr.next;
}
return sum;
}; // O(n) time, O(1) space
const sumList = (head) => {
if(head === null) return 0;
return head.val + sumList(head.next);
}; // O(n) time, O(n) space
console.log(sumList(list.head));
참고 : codebyte - Recursive Linked List from Scratch
Author And Source
이 문제에 관하여(2. recursive Linkded List), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kimkevin90/2.-recursive-Linkded-List저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)