In object-oriented design, the dependency inversion principle is a specific form of decoupling software modules. When following this principle, the conventional dependency relationships established from high-level, policy-setting modules to…
Category: Java
Design Pattern: interface-segregation principle (ISP)
In the field of software engineering, the interface-segregation principle (ISP) states that no client should be forced to depend on methods it does not use.[1] ISP splits interfaces that…
Design Pattern: Open closed principle with using spesification pattern
In computer programming, the specification pattern is a particular software design pattern, whereby business rules can be recombined by chaining the business rules together using boolean logic. The pattern…
LeetCode: Sorted Array to BST
Given an array where elements are sorted in ascending order, convert it to a height balanced BST. For this problem, a height-balanced binary tree is defined as a binary…
LeetCode: Binary Tree Level Order Traversal
Given a binary tree, return the level order traversal of its nodes’ values. (ie, from left to right, level by level). For example:Given binary tree [3,9,20,null,null,15,7], 3 / \ 9 20 /…
LeetCode: Symmetric Tree
Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmetric: 1 / \ 2 2 /…
LeetCode: Is valid BST
Given a binary tree, determine if it is a valid binary search tree (BST). Assume a BST is defined as follows: The left subtree of a node contains only…
LeetCode: Max depth of a tree
Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest leaf…
Self Recursive Generics in Java and Builder Pattern
Sometimes instantiate a class might be harder with constructor than using builder pattern. Like StringBuilder we might want to construct our object with simple methods. And this is called…
Java Predicates , Function and Lambda expressions
Like function pointers in C , we have a powerful tool in Java. We can easily extend our application by using this powerfull tools in Java. For instance, let…