剑指offer--树的子结构

原创 2017年04月25日 14:51:04

题目描述
输入两棵二叉树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

相关文章推荐

嵌入式Linux学习计划

自学嵌入式已经有一年的时间了,从刚开始的迷茫无助到现在的逐渐明朗,中间经历的太多太多了。俗话说万事开头难,刚开始的时候,根本就不知如何开始,上网查资料被一堆堆新名词搞的找不到北,去图书馆看书也是找不到...

为什么要学习C++

语言之争是程序员永远不会疲倦的闲暇话题,初学者的语言选择也是大家所津津乐道的。回望这几年,随着Android, ios的来势汹汹,不少初学者都喜欢以Java, Objective-C作为自己的第一门语...

剑指offer 树的子结构

树的子结构题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 我的解答题意这道题目我是在牛客网上做的,题目叙述过于简答,坑了我半天,我的理解是一棵...

剑指offer-面试题18.树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。 二叉树节点定义如下: 1 struct BinaryTreeNode 2 { 3 int m_nValu...

剑指offer 18. 树的子结构

// 题目:给出两个树,判断B是否是A的子结构 // 解法:递归的进行,转换每一个节点 public class Main { public static void main(String[] ...

剑指offer:树的子结构

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

剑指offer面试题18:树的子结构

题目:输入两棵二叉树A和B,判断B是不是A的子结构。 算法分析:         要查找树A中是否存在和树B结构一样的子树,我们可以分为两步,第一步:在树A中找到和...

剑指offer(19):树的子结构

题目描述输入两颗二叉树A,B,判断B是不是A的子结构。分析 有关树的操作一般是通过递归遍历来实现的。...

码农小汪-剑指Offer之15-树的子结构

题目描述输入两颗二叉树A,B,判断B是不是A的子结构。题解:我们这个主要的问题就是,如何去判断一个是不是另一个的子树,首先一点。我们肯定涉及到对于树的值得比较,肯定会和遍历有关系啦。遍历最简单的递归去...

树的子结构(剑指offer18)

题目:输入两棵二叉树A和B,判断B是不是A的子结构。二叉树的结点定义如下:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指offer--树的子结构
举报原因:
原因补充:

(最多只允许输入30个字)