상세 컨텐츠

본문 제목

[Tree] Tree 구현

Programming Language/JavaScript

by Yongari 2022. 12. 14. 22:56

본문

멤버 변수

  • 입력 데이터를 담을 수 있는 value
  • 하위 노드를 저장할 수 있는 Array 타입의 children

메서드

  • insertNode(value): 입력받은 value를 Tree에 계층적으로 추가할 수 있어야 합니다.
  • contains(value): 트리에 포함된 데이터를 찾을 수 있어야 합니다.

주의 사항

  • value는 어떠한 값도 들어갈 수 있지만 현재 구현하는 Tree는 숫자로 제한합니다.

사용 예시

const rootNode = new Tree(null);

for(let i = 0; i <= 4; i++) {
  if(rootNode.children[i]) {
    rootNode.children[i].insertNode(i);
  }
 rootNode.insertNode(i); 
}
rootNode; // {value: null, children: Array(5)}
rootNode.contains(5); // false
rootNode.contains(1); // true

 

풀이코드 설명

class Tree {
  constructor(value) {
    // constructor로 만든 객체는 트리의 Node가 됩니다.
    this.value = value; //밸류 설정
    this.children = []; //children 설정
  }

  // 트리의 삽입 메서드를 만듭니다.
  insertNode(value) {
    // 값이 어떤 이름으로 만들어지고 어느 위치에 붙는지 떠올리는 것이 중요합니다.
    // TODO: 트리에 붙게 될 childNode를 만들고, children에 넣어야 합니다.
    //const childNode = [];
    let node = new Tree(value);
    this.children.push(node); 
  }

  // 트리 안에 해당 값이 포함되어 있는지 확인하는 메서드를 만듭니다.
  contains(value) {
    let result = false;
    // TODO: 값이 포함되어 있다면 true를 반환하세요.
    if (this.value === value) {
      return true;
    } else {
      if (this.children.length > 0) {
        for (let i = 0; i < this.children.length; i++) {
          result = this.children[i].contains(value);
          if (result) break;
        }
      }
      return result;
    }
    // TODO: 값을 찾을 때까지 children 배열을 순회하며 childNode를 탐색하세요.
    // 전부 탐색했음에도 불구하고 찾지 못했다면 false를 반환합니다.
    return false;
  }
}

 

관련글 더보기