class Node {
 
constructor(value) {
    this.value =
value;
    this.left =
null;
    this.right =
null;
  }
}
class BinaryTree {
  constructor()
{
    this.root =
null;
  }
  insert(value)
{
    const node =
new Node(value);
    if
(!this.root) {
      this.root
= node;
      return
this;
    }
    let current
= this.root;
    while (true)
{
      if (value
< current.value) {
        if
(!current.left) {
         
current.left = node;
          return
this;
        }
        current
= current.left;
      } else if
(value > current.value) {
        if
(!current.right) {
         
current.right = node;
          return
this;
        }
        current
= current.right;
      } else {
        return
undefined;
      }
    }
  }
  preorder(node
= this.root) {
    if (node) {
     
console.log(node.value);
     
this.preorder(node.left);
     
this.preorder(node.right);
    }
  }
  inorder(node =
this.root) {
    if (node) {
     
this.inorder(node.left);
     
console.log(node.value);
     
this.inorder(node.right);
    }
  }
  postorder(node
= this.root) {
    if (node) {
     
this.postorder(node.left);
     
this.postorder(node.right);
     
console.log(node.value);
    }
  }
}
const tree = new BinaryTree();
tree.insert(10);
tree.insert(6);
tree.insert(15);
tree.insert(3);
tree.insert(8);
tree.insert(12);
tree.insert(18);
console.log('Preorder:');
tree.preorder();
console.log('Inorder:');
tree.inorder();
console.log('Postorder:');
tree.postorder();
Output:-
Preorder:
10
6
3
8
15
12
18
Inorder:
3
6
8
10
12
15
18
Postorder:
3
8
6
12
18
15
10
0 Comments