This Java program is to Implement binary tree and check whether a tree is subtree of another. This can be done in two ways. A tree can be subtree of another if they have same structure (same object references but different value) and with same structure and values. This given class checks for both.
Here is the source code of the Java Program to Check Whether an Input Binary Tree is the Sub Tree of the Binary Tree. The Java program is successfully compiled and run on a Windows system. The program output is also shown below.
//This is a java program to check whether a binary tree is subtree of another tree
class Btrees
{
Object value;
Btrees Left;
Btrees Right;
Btrees(int k)
{
value = k;
}
}
public class SubBinaryTree
{
public static boolean ifsubtreeRef(Btrees t1, Btrees t2)
{
if (t2 == null)
return true;
if (t1 == null)
return false;
return (t1 == t2) || ifsubtreeRef(t1.Left, t2)
|| ifsubtreeRef(t1.Right, t2);
}
public static boolean ifsubtreeValue(Btrees t1, Btrees t2)
{
if (t2 == null)
return true;
if (t1 == null)
return false;
if (t1.value == t2.value)
if (ifsubtreeValue(t1.Left, t2.Left)
&& ifsubtreeValue(t1.Right, t2.Right))
return true;
return ifsubtreeValue(t1.Left, t2) || ifsubtreeValue(t1.Right, t2);
}
public static void main(String[] args)
{
Btrees t1 = new Btrees(1);
t1.Left = new Btrees(2);
t1.Right = new Btrees(3);
t1.Right.Left = new Btrees(4);
t1.Right.Right = new Btrees(5);
Btrees t2 = new Btrees(3);
t2.Left = new Btrees(4);
t2.Right = new Btrees(5);
if (ifsubtreeRef(t1, t2))
System.out.println("T2 is sub-tree of T1 (Reference wise)");
else
System.out.println("T2 is NOT sub-tree of T1 (Reference wise)");
if (ifsubtreeValue(t1, t2))
System.out.println("T2 is sub-tree of T1 (Value wise)");
else
System.out.println("T2 is NOT sub-tree of T1 (Value wise)");
}
}
Output:
$ javac SubBinaryTree.java $ java SubBinaryTree T2 is NOT sub-tree of T1 (Reference wise) T2 is sub-tree of T1 (Value wise)
Related posts:
Java Program to Implement Euclid GCD Algorithm
Java program to Implement Tree Set
Spring Data JPA @Query
Java Program to Implement Repeated Squaring Algorithm
Spring WebFlux Filters
Sorting in Java
New Features in Java 8
Java Program to Find the Peak Element of an Array O(n) time (Naive Method)
RegEx for matching Date Pattern in Java
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Spring Boot - Twilio
Zipping Collections in Java
Semaphore trong Java
A Guide to Spring Cloud Netflix – Hystrix
Java Program to Implement Graph Structured Stack
Spring Boot - Tomcat Port Number
Java Program to Delete a Particular Node in a Tree Without Using Recursion
Spring @RequestMapping New Shortcut Annotations
Migrating from JUnit 4 to JUnit 5
Send email with JavaMail
Connect through a Proxy
Java Program to Implement Slicker Algorithm that avoids Triangulation to Find Area of a Polygon
Java Program to Find Second Smallest of n Elements with Given Complexity Constraint
Java – Write an InputStream to a File
Remove HTML tags from a file to extract only the TEXT
Hướng dẫn Java Design Pattern – Prototype
How to Get All Spring-Managed Beans?
Build a REST API with Spring and Java Config
Create a Custom Exception in Java
Unsatisfied Dependency in Spring
Java Program to Find Location of a Point Placed in Three Dimensions Using K-D Trees
More Jackson Annotations