Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.22 KB | None | 0 0
  1. /**
  2. Binary Search Tree with
  3. 1. Insert
  4. 2. Contains
  5. 3. Find Min
  6. 4. Find Max
  7. 5. Inorder Traverse
  8. **/
  9.  
  10. function Node(value, left, right) {
  11. this.value = value;
  12. this.left = left;
  13. this.right = right;
  14. }
  15.  
  16. function Tree() {
  17. this.root = null;
  18. }
  19.  
  20. Tree.prototype.insert = function(value) {
  21. if(this.root == null){
  22. this.root = new Node(value, null, null);
  23. }else{
  24. insertNode(this.root, value);
  25. }
  26. }
  27.  
  28. function insertNode(current, value){
  29. if(value < current.value){
  30. if(current.left == null){
  31. current.left = new Node(value, null, null)
  32. }else{
  33. insertNode(current.left, value)
  34. }
  35. }else{
  36. if(current.right == null){
  37. current.right = new Node(value, null, null)
  38. }else{
  39. insertNode(current.right, value);
  40. }
  41. }
  42. }
  43.  
  44.  
  45. Tree.prototype.contains = function(value) {
  46. if(this.root == null){
  47. return false
  48. }else{
  49. return find(this.root, value)
  50. }
  51. }
  52.  
  53. function find(node, value){
  54. if(node == null){
  55. return false
  56. }else if(value === node.value){
  57. return true;
  58. }else if(value < node.value){
  59. return find(node.left, value)
  60. }else{
  61. return find(node.right, value);
  62. }
  63. }
  64.  
  65. Tree.prototype.max = function(){
  66. if(this.root == null){
  67. return;
  68. }else{
  69. return findMax(this.root);
  70. }
  71. }
  72.  
  73. function findMax(node) {
  74. if(node.right == null){
  75. return node.value;
  76. }else{
  77. return findMax(node.right);
  78. }
  79. }
  80.  
  81. Tree.prototype.min = function(){
  82. if(this.root == null){
  83. return;
  84. }else{
  85. return findMin(this.root);
  86. }
  87. }
  88.  
  89. function findMin(node) {
  90. if(node.left == null){
  91. return node.value;
  92. }else{
  93. return findMin(node.left)
  94. }
  95. }
  96.  
  97. Tree.prototype.inorder = function(){
  98. var inorderTree = [];
  99. if(this.root != null){
  100. inorderTraverse(this.root, inorderTree);
  101. }
  102. return inorderTree;
  103. }
  104. function inorderTraverse(node, inorderTree){
  105. if(node != null){
  106. inorderTraverse(node.left, inorderTree);
  107. inorderTree.push(node.value);
  108. inorderTraverse(node.right, inorderTree);
  109. }
  110. }
  111.  
  112. let tree = new Tree();
  113. tree.insert(50);
  114. tree.insert(30);
  115. tree.insert(20);
  116. tree.insert(40);
  117. tree.insert(70);
  118. tree.insert(60);
  119. tree.insert(80);
  120.  
  121. console.log(tree.max());
  122. console.log(tree.min());
  123.  
  124. console.log(tree.inorder());
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement