Delta_Sierra

Binary Search C#_Samson

Sep 30th, 2025 (edited)
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.80 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3.  
  4. public class Node
  5. {
  6.     public int Data;
  7.     public Node Left;
  8.     public Node Right;
  9.  
  10.     public Node(int data)
  11.     {
  12.         Data = data;
  13.         Left = null;
  14.         Right = null;
  15.     }
  16. }
  17.  
  18. public class BinarySearchTreeChecker
  19. {
  20.     private const long INT_MIN_LONG = long.MinValue;
  21.     private const long INT_MAX_LONG = long.MaxValue;
  22.  
  23.     public static bool IsBinarySearchTree(Node root)
  24.     {
  25.         return IsBSTUtil(root, INT_MIN_LONG, INT_MAX_LONG);
  26.     }
  27.  
  28.     private static bool IsBSTUtil(Node node, long min_val, long max_val)
  29.     {
  30.         if (node == null)
  31.         {
  32.             return true;
  33.         }
  34.  
  35.         if (node.Data < min_val || node.Data > max_val)
  36.         {
  37.             return false;
  38.         }
  39.  
  40.         bool isLeftValid = IsBSTUtil(node.Left, min_val, (long)node.Data - 1);
  41.         if (!isLeftValid)
  42.         {
  43.             return false;
  44.         }
  45.  
  46.         bool isRightValid = IsBSTUtil(node.Right, (long)node.Data, max_val);
  47.        
  48.         return isRightValid;
  49.     }
  50. }
  51.  
  52. public class Program
  53. {
  54.     private static int GetNodeData(string nodeName)
  55.     {
  56.         int data;
  57.         bool isValid;
  58.         do
  59.         {
  60.             Console.Write($"Enter data for {nodeName}: ");
  61.             string input = Console.ReadLine();
  62.             isValid = int.TryParse(input, out data);
  63.             if (!isValid)
  64.             {
  65.                 Console.WriteLine("Invalid input. Please enter an integer.");
  66.             }
  67.         } while (!isValid);
  68.         return data;
  69.     }
  70.  
  71.     public static void Main()
  72.     {
  73.         Console.WriteLine("--- Binary Search Tree Checker ---");
  74.         Console.WriteLine("Please input the data for each position in the tree structure (7 nodes total).");
  75.         Console.WriteLine("Your input will define the tree's structure for the check.\n");
  76.        
  77.         Node root = new Node(GetNodeData("root"));
  78.        
  79.         root.Left = new Node(GetNodeData("root.Left"));
  80.        
  81.         root.Right = new Node(GetNodeData("root.Right"));
  82.        
  83.         root.Left.Left = new Node(GetNodeData("root.Left.Left"));
  84.        
  85.         root.Left.Right = new Node(GetNodeData("root.Left.Right"));
  86.        
  87.         root.Right.Left = new Node(GetNodeData("root.Right.Left"));
  88.        
  89.         root.Right.Right = new Node(GetNodeData("root.Right.Right"));
  90.  
  91.         Console.WriteLine("\n--- Tree Construction Complete. Checking structure... ---");
  92.  
  93.         bool is_bst = BinarySearchTreeChecker.IsBinarySearchTree(root);
  94.  
  95.         Console.Write("\nThe inputted data elements are structured as a: ");
  96.         if (is_bst)
  97.         {
  98.             Console.WriteLine("BINARY SEARCH TREE (BST).");
  99.         }
  100.         else
  101.         {
  102.             Console.WriteLine("NOT a Binary Search Tree (BST).");
  103.         }
  104.     }
  105. }
Advertisement
Add Comment
Please, Sign In to add comment