트리순회

Song Haeun·2024년 1월 10일
0

트리 순회(Tree Traversal)

트리 구조에서 노드를 특정한 순서로 방문하는 방법

3가지 방법으로 아래 트리를 순회해보자!

중위 순회 (Inorder Traversal)

Left > Root > Right

D-B-E-A-F-C-G

전위 순회 (Preorder Traversal)

Root > Left > Right

A-B-D-E-C-F-G

후위 순회 (Postorder Traversal)

Left > right > Root

D-E-B-F-G-C-A

트리 구현

Node class

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

Tree class

class Tree {
  constructor() {
    this.root = null; // 트리의 루트 노드
  }

  // 루트를 설정하는 메서드
  setRoot(node) {
    this.root = node;
  }

  // 트리의 루트를 가져오는 메서드
  getRoot() {
    return this.root;
  }

  // 새로운 노드를 생성하는 메서드
  makeNode(left, value, right) {
    const node = new Node();
    node.left = left;
    node.value = value;
    node.right = right;
    return node;
  }

  // 중위 순회
  inorderTraversal(node) {
    if (node !== null) {
      this.inorder(node.left);
      console.log(node.value);
      this.inorder(node.right);
    }
  }

  // 전위 순회
  preorderTraversal(node) {
    if (node !== null) {
      console.log(node.value);
      this.inorder(node.left);
      this.inorder(node.right);
    }
  }

  // 후위 순회
  postorderTraversal(node) {
    if (node !== null) {
      this.inorder(node.left);
      this.inorder(node.right);
      console.log(node.value);
    }
  }
}
profile
프론트엔드 개발하는 송하은입니다🐣

0개의 댓글