码迷,mamicode.com
首页 > 其他好文 > 详细

LintCode Subtree

时间:2016-02-14 00:28:57      阅读:345      评论:0      收藏:0      [点我收藏+]

标签:

原题链接在这里:http://www.lintcode.com/en/problem/subtree/

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 ofT1.

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.

Time Complexity: O(m*n), m是T1的node数, n 是T2的node 数. Space: O(logm). isSame用logn, isSubtree用logm.

AC Java:

 1 /**
 2  * Definition of TreeNode:
 3  * public class TreeNode {
 4  *     public int val;
 5  *     public TreeNode left, right;
 6  *     public TreeNode(int val) {
 7  *         this.val = val;
 8  *         this.left = this.right = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     /**
14      * @param T1, T2: The roots of binary tree.
15      * @return: True if T2 is a subtree of T1, or false.
16      */
17     public boolean isSubtree(TreeNode T1, TreeNode T2) {
18         // write your code here
19         if(T2 == null){
20             return true;
21         }
22         if(T1 == null){
23             return false;
24         }
25         return isSame(T1,T2) || isSubtree(T1.left, T2) || isSubtree(T1.right, T2);
26     }
27     
28     private boolean isSame(TreeNode T1, TreeNode T2){
29         if(T1 == null && T2 == null){
30             return true;
31         }
32         if(T1 == null || T2 == null){
33             return false;
34         }
35         if(T1.val != T2.val){
36             return false;
37         }
38         return isSame(T1.left, T2.left) && isSame(T1.right, T2.right);
39     }
40 }

 

LintCode Subtree

标签:

原文地址:http://www.cnblogs.com/Dylan-Java-NYC/p/5188429.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!