package org.wesome.dsalgo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.Objects;
@Data
@NoArgsConstructor
@AllArgsConstructor
class Node {
int data;
Node left, right;
public Node(int data) {
this.data = data;
left = right = null;
}
}
@Data
public class BinarySearchTree {
Node root;
public int findMaximumDepth(Node node) {
if (Objects.isNull(node)) {
return 0;
}
/* check for left and right child */
if (Objects.isNull(node.left) && Objects.isNull(node.right)) {
return 1;
}
/* check for right sub child */
if (Objects.isNull(node.right)) {
return findMaximumDepth(node.left) + 1;
}
/* check for left child */
if (Objects.isNull(node.left)) {
return findMaximumDepth(node.right) + 1;
}
/* both child is present, so find the maximum of both */
return Math.max(findMaximumDepth(node.left), findMaximumDepth(node.right)) + 1;
}
void insert(int data) {
System.out.println("BinarySearchTree.insert data = " + data);
root = insert(root, data);
}
Node insert(Node root, int data) {
if (Objects.isNull(root)) {
Node tempNode = new Node(data);
return tempNode;
}
if (data > root.data) {
root.right = insert(root.right, data);
} else {
root.left = insert(root.left, data);
}
return root;
}
}