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

《剑指Offer》题目:树的子结构

时间:2017-06-10 20:24:48      阅读:117      评论:0      收藏:0      [点我收藏+]

标签:树的子结构   pre   bool   nod   java代码   java   turn   结构   ret   

题目描述:树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)

题目分析:此题可以拆成两题,1.在二叉树中查找是否存在某个结点;2.判断两个二叉树是否有相同的结构

 

Java代码:

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }

}
public class HasSubtree {
    public boolean hasSubtree(TreeNode root1,TreeNode root2) {
        boolean res = false;
        if (root1 != null && root2 !=null){
            if (root1.val == root2.val){
                //这时候判断两个二叉树是否有相同的结构
                res = isAHasB(root1, root2);
            }
            if (!res){
                res = hasSubtree(root1.left,root2);
            }
            if (!res){
                res = hasSubtree(root1.right, root2);
            }
        }
        return res;
    }
   //判断两个二叉树是否有相同的结构
public boolean isAHasB(TreeNode root1,TreeNode root2){ if (root2 == null) return true; if (root1 == null) return false; if (root1.val != root2.val) return false; return isAHasB(root1.left, root2.left) && isAHasB(root1.right, root2.right); } }

 

《剑指Offer》题目:树的子结构

标签:树的子结构   pre   bool   nod   java代码   java   turn   结构   ret   

原文地址:http://www.cnblogs.com/weekend/p/6979684.html

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