Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /**
- Binary Search Tree with
- 1. Insert
- 2. Contains
- 3. Find Min
- 4. Find Max
- 5. Inorder Traverse
- **/
- function Node(value, left, right) {
- this.value = value;
- this.left = left;
- this.right = right;
- }
- function Tree() {
- this.root = null;
- }
- Tree.prototype.insert = function(value) {
- if(this.root == null){
- this.root = new Node(value, null, null);
- }else{
- insertNode(this.root, value);
- }
- }
- function insertNode(current, value){
- if(value < current.value){
- if(current.left == null){
- current.left = new Node(value, null, null)
- }else{
- insertNode(current.left, value)
- }
- }else{
- if(current.right == null){
- current.right = new Node(value, null, null)
- }else{
- insertNode(current.right, value);
- }
- }
- }
- Tree.prototype.contains = function(value) {
- if(this.root == null){
- return false
- }else{
- return find(this.root, value)
- }
- }
- function find(node, value){
- if(node == null){
- return false
- }else if(value === node.value){
- return true;
- }else if(value < node.value){
- return find(node.left, value)
- }else{
- return find(node.right, value);
- }
- }
- Tree.prototype.max = function(){
- if(this.root == null){
- return;
- }else{
- return findMax(this.root);
- }
- }
- function findMax(node) {
- if(node.right == null){
- return node.value;
- }else{
- return findMax(node.right);
- }
- }
- Tree.prototype.min = function(){
- if(this.root == null){
- return;
- }else{
- return findMin(this.root);
- }
- }
- function findMin(node) {
- if(node.left == null){
- return node.value;
- }else{
- return findMin(node.left)
- }
- }
- Tree.prototype.inorder = function(){
- var inorderTree = [];
- if(this.root != null){
- inorderTraverse(this.root, inorderTree);
- }
- return inorderTree;
- }
- function inorderTraverse(node, inorderTree){
- if(node != null){
- inorderTraverse(node.left, inorderTree);
- inorderTree.push(node.value);
- inorderTraverse(node.right, inorderTree);
- }
- }
- let tree = new Tree();
- tree.insert(50);
- tree.insert(30);
- tree.insert(20);
- tree.insert(40);
- tree.insert(70);
- tree.insert(60);
- tree.insert(80);
- console.log(tree.max());
- console.log(tree.min());
- console.log(tree.inorder());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement