인프런 커뮤니티 질문&답변

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)

insert 구현하기

숙제 : 같은 값을 넣은경우 에러 처리

작성

·

85

0

class Node {
  constructor(value) {
    this.value = value;
    this.left = null;
    this.right = null;
  }
}

class BinarySearchTree {
  constructor() {
    this.root = null;
  }

  #insert(node, value) {
    if (node.value > value) {
      // 루트노드보다 작은 값이면
      if (node.left) {
        this.#insert(node.left, value);
      } else {
        node.left = new Node(value);
      }
    } else {
      // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw)
      if (node.value === value)
        throw new Error(`이미 해당 ${value}가 존재 합니다`);
      // 루트노드보다 큰 값이면
      if (node.right) {
        this.#insert(node.right, value);
      } else {
        node.right = new Node(value);
      }
    }
  }
  insert(value) {
    if (!this.root) {
      this.root = new Node(value);
    } else {
      this.#insert(this.root, value);
      // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw)
    }
  }
  search(value) {}
  remove(value) {}
}

const bst = new BinarySearchTree();
bst.insert(8);
//bst.insert(8); // Error: 이미 해당 8가 존재 합니다
bst.insert(10);
//bst.insert(10); // Error: 이미 해당 10가 존재 합니다
bst.insert(3);
//bst.insert(3); // Error: 이미 해당 3가 존재 합니다
bst.insert(1);
//bst.insert(1); // Error: 이미 해당 1가 존재 합니다
bst.insert(14);
//bst.insert(14); // Error: 이미 해당 14가 존재 합니다
bst.insert(6);
//bst.insert(6); // Error: 이미 해당 6가 존재 합니다
bst.insert(7);
//bst.insert(7); // Error: 이미 해당 7가 존재 합니다
bst.insert(4);
//bst.insert(4); // Error: 이미 해당 4가 존재 합니다
bst.insert(13);
//bst.insert(13); // Error: 이미 해당 13가 존재 합니다

숙제 코드 정답일까요?

답변 1

1

제로초(조현영)님의 프로필 이미지
제로초(조현영)
지식공유자

네 정답입니다. 근데 저는 else문 안에 if 보다는 else if를 더 좋아하긴 합니다.

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12
질문자

오호!!! 그렇군요 감사합니다! 🤣

rhkdtjd_12님의 프로필 이미지
rhkdtjd_12

작성한 질문수

질문하기