戴璞微的博客

简单点!做事的动机简单点

剑指offer--树的子结构

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


AC代码:

/**
public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

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

    }

}
*/

/*
 * 解题思路:俩颗树都不为空时,如果根节点相同
 * ,那么判断root2是不是root1的子树
 * 如果不是,那么判断root2是不是root1左子树的子树
 * 如果还不是,那么判断root2是不是root1右子树的子树
 * 如果还不是,返回root2不是root1的子树
 */

public class Solution {

    public boolean IsSubTree(TreeNode root1,TreeNode root2){
        /*
         * 判断root2是否为root1的子树
         */
        if ( root2 == null){
            return true;
        }else if ( root1 == null){
            return false;
        }

        if ( root1.val != root2.val){
            return false;
        }
        return IsSubTree(root1.left, root2.left)&&IsSubTree(root1.right, root2.right);
    }

    public boolean HasSubtree(TreeNode root1,TreeNode root2) {
        boolean result = false;
        if ( root1 != null && root2 != null){
            if ( root1.val == root2.val){
                result = IsSubTree(root1, root2);
            }
            if(!result){
                result = IsSubTree(root1.left, root2);
            }
            if (!result){
                result = IsSubTree(root1.right, root2);
            }
        }
        return result;
    }
}
阅读更多
版权声明:本文为博主原创文章,若需转载,请注明http://blog.csdn.net/qq_30091945 https://blog.csdn.net/qq_30091945/article/details/70739443
所属专栏: 剑指offer题解
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭