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 Iterative Deepening
Java Program to Implement Merge Sort on n Numbers Without tail-recursion
Quick Intro to Spring Cloud Configuration
Getting Started with Forms in Spring MVC
Java Program to Implement HashSet API
Hướng dẫn Java Design Pattern – Proxy
Spring @RequestMapping New Shortcut Annotations
Logging a Reactive Sequence
Java Program to Find a Good Feedback Edge Set in a Graph
Performance Difference Between save() and saveAll() in Spring Data
Guide to CopyOnWriteArrayList
Serve Static Resources with Spring
Hướng dẫn Java Design Pattern – Iterator
Apache Commons Collections OrderedMap
Java Program to Show the Duality Transformation of Line and Point
Java Program to Implement JobStateReasons API
Object Type Casting in Java
Spring Boot - Servlet Filter
CharSequence vs. String in Java
Spring MVC Setup with Kotlin
Java Program to Implement the MD5 Algorithm
Java Program to find the peak element of an array using Binary Search approach
Jackson Exceptions – Problems and Solutions
REST Web service: Upload và Download file với Jersey 2.x
Spring REST with a Zuul Proxy
How to Get the Last Element of a Stream in Java?
Java Program to do a Depth First Search/Traversal on a graph non-recursively
Spring Boot Application as a Service
Error Handling for REST with Spring
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Arrays.asList vs new ArrayList(Arrays.asList())
Spring Cloud – Securing Services