logo
Problems

Subtree

Problem

You have two every large binary trees: T1, with millions of nodes, and T2, with hundreds of nodes. Create an algorithm to decide if T2 is a subtree of T1.

Example

T2 is a subtree of T1 in the following case:

           1                3
          / \              /
    T1 = 2   3      T2 =  4
            /
           4

T2 isn't a subtree of T1 in the following case:

           1               3
          / \               \
    T1 = 2   3       T2 =    4
            /
           4

Note

A tree T2 is a subtree of T1 if there exists a node n in T1 such that the subtree of n is identical to T2. That is, if you cut off the tree at node n, the two trees would be identical.

Online Judge