Spaces:
Sleeping
Sleeping
| /** | |
| * Copyright (c) 2017~2019, OBCon Inc. | |
| * All rights reserved. | |
| */ | |
| /** | |
| * @file | |
| * @copyright 2017~2019, OBCon Inc. | |
| * @author gye hyun james kim [pnuskgh@gmail.com] | |
| */ | |
| class Node { | |
| constructor(data) { | |
| this.data = data; | |
| this.left = null; | |
| this.right = null; | |
| this.children = []; | |
| } | |
| } | |
| //--- 트리 순회 | |
| //--- pre-order (선순회), post-order (후순회), in-order (중순회), level-order (단계순회) | |
| //--- AVL Tree : 트리의 높이를 최소화 | |
| class Tree { //--- FIFO (First In First Out) | |
| constructor(isBinaryTree=true, isAVLTree=false) { | |
| this._root = null; | |
| this.isBinaryTree = isBinaryTree; | |
| this.isAVLTree = isAVLTree; | |
| } | |
| insert(data) { | |
| if (this._root == null) { | |
| this._root = new Node(data); | |
| } else { | |
| let cur = this._root; | |
| //--- Reserved | |
| } | |
| } | |
| remove(data) { | |
| } | |
| findNode(data) { | |
| } | |
| traversePreOrder(node) { | |
| if (!node) { | |
| return; | |
| } | |
| console.log(node.data); | |
| for (let idx = 0; idx < node.children; idx++) { | |
| this.traversePreOrder(node.children[idx]); | |
| } | |
| } | |
| traverseInOrder(node) { | |
| } | |
| traversePostOrder(node) { | |
| } | |
| traverseLevelOrder(node) { | |
| } | |
| setDepthBasedOnChildren() { //--- 자식의 높이 계산 | |
| if (this.isAVLTree == false) { | |
| return; | |
| } | |
| } | |
| rotateLL() { //--- 왼쪽으로 회전 | |
| if (this.isAVLTree == false) { | |
| return; | |
| } | |
| } | |
| rotateRR() { //--- 오른쪽으로 회전 | |
| if (this.isAVLTree == false) { | |
| return; | |
| } | |
| } | |
| balance() { //--- 왼쪽/오른쪽 회전을 통해서 균형 잡기 | |
| } | |
| } | |
| module.exports = Tree; | |