package com.interview.tree;
/**
* Date 04/11/2015
* @author tusroy
*
* Youtube link - https://youtu.be/ySDDslG8wws
*
* Given roots of two tree, return true if they have same data and same structure
* or return false.
*
* Solution
* Keep comparing root of both data and then recursively check left and right.
*
* Time complexity is O(n)
*/
public class SameTree {
public boolean sameTree(Node root1, Node root2){
if(root1 == null && root2 == null){
return true;
}
if(root1 == null || root2 == null){
return false;
}
return root1.data == root2.data &&
sameTree(root1.left, root2.left) &&
sameTree(root1.right, root2.right);
}
public static void main(String args[]){
BinaryTree bt = new BinaryTree();
Node root1 = null;
root1 = bt.addNode(10, root1);
root1 = bt.addNode(20, root1);
root1 = bt.addNode(15, root1);
root1 = bt.addNode(2, root1);
Node root2 = null;
root2 = bt.addNode(10, root2);
root2 = bt.addNode(20, root2);
root2 = bt.addNode(15, root2);
root2 = bt.addNode(2, root2);
SameTree st = new SameTree();
assert st.sameTree(root1, root2);
}
}