您的位置:首页 > 职场人生

Iava 剑指offer_面试题18_树的子结构

2017-05-04 08:36 316 查看
题目:输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。

两个步骤:

1、第一步在树 A 中找到和树 B 的根结点的值一样的结点 R

2、第二步再判断树 A 中以 R 为根结点的子树是不是包含和树 B 一样的结构。

对于递归:想好判断条件,以及 什么条件下该去递归。

[java] view
plain copy

/** 

public class TreeNode { 

    int val = 0; 

    TreeNode left = null; 

    TreeNode right = null; 

 

    public TreeNode(int val) { 

        this.val = val; 

 

    } 

 



*/  

public class Solution {  

    public boolean HasSubtree(TreeNode root1,TreeNode root2) {  

        if(root1 == null || root2 == null) return false;  

        return isEqual(root1, root2) || HasSubtree(root1.left, root2) || HasSubtree(root1.right, root2);  

    }  

       

    private boolean isEqual(TreeNode root1, TreeNode root2) {  

        if(root2 == null) return true;  

        if(root1 == null) return false;  

        return root1.val == root2.val && isEqual(root1.left, root2.left) && isEqual(root1.right, root2.right);  

    }  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: