数的子结构

题目描述

输入两颗二叉树A,B,判断B是不是A的子结构。

采用两个递归来实现,第一个递归是遍历树A,找到A中与B的根节点相等的节点,第二个递归是用来比较从找到

的节点开始与B树每个节点进行比较,如果都相同则是子树,如果不相同,则继续进行寻找,如果没找到,则不

不是A的子树。

public class Solution {
     public boolean HasSubtree(TreeNode root1,TreeNode root2) {
         boolean result=false; 
         if(root1!=null&&root2!=null){
             if(root1.val==root2.val){
                 result=doesHasSubtree(root1,root2);
             }
             if(!result){
                 result=HasSubtree(root1.left,root2);
             }
             if(!result){
                 result=HasSubtree(root1.right,root2);
             }
         }
            
         return result;
     }
     
     private boolean doesHasSubtree(TreeNode root1,TreeNode root2){
         if(root2==null)
             return true;
         if(root1==null)
             return false;
         if(root1.val!=root2.val)
             return false;
         return doesHasSubtree(root1.left,root2.left)&&doesHasSubtree(root1.right,root2.right);
     }

}
posted @ 2016-02-11 10:56  黄大仙爱编程  阅读(127)  评论(0)    收藏  举报