关闭

剑指offer--树的子结构

标签: 数据结构剑指offer-java实现牛客网在线编程
305人阅读 评论(0) 收藏 举报
分类:

题目描述
输入两棵二叉树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;
    }
}
0
0
查看评论

剑指offer--树的子结构

题目描述 输入两颗二叉树A,B,判断B是不是A的子结构。 /*public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(in...
  • kangaroo835127729
  • kangaroo835127729
  • 2015-04-11 13:50
  • 689

剑指offer--树的子结构--再做

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 注意是子结构不是子数: public class 树的子结构 { public class TreeNode { int val = 0; TreeNo...
  • obession
  • obession
  • 2017-06-26 10:06
  • 84

剑指offer--树的子结构(牛客网)

题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 代码: /* struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeN...
  • sxs11
  • sxs11
  • 2017-07-17 16:29
  • 105

剑指Offer:面试题6重建二叉树

重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 前序遍历:是先根节...
  • u012162920
  • u012162920
  • 2016-08-17 14:18
  • 220

剑指offer--(3)树的子结构--Java描述

写在前面:    这个问题的关键在于,从root1开始寻找,第一个相同的根节点,找到之后调用自定义的函数,来遍历,判断是否是子结构。Java代码实现如下:public class Solution {     public boolean HasSu...
  • May_3
  • May_3
  • 3天前 11:27
  • 2

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

 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) python实现: # -*- coding:utf-8 -*- # class TreeNode: #     def __init__(se...
  • qingyujean
  • qingyujean
  • 2016-09-26 14:44
  • 97

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

#include #define nullptr NULL struct BinaryTreeNode { double m_dbValue; BinaryTreeNode* m_pLeft; BinaryTreeNode* ...
  • u010726692
  • u010726692
  • 2017-07-22 16:30
  • 68

剑指Offer——重建二叉树——C++

重建二叉树 题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 思路:根据前序第一个字符是...
  • hellozmz
  • hellozmz
  • 2016-11-25 10:52
  • 814

剑指Offer----树的子结构

输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; p...
  • u010013140
  • u010013140
  • 2017-07-24 17:36
  • 55

剑指offer_二叉树---树的子结构

题目描述输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)解题思路1,首先判断根节点是否相等 2,如果根节点相等,在接着判断其子结构是否相等 3,显然是两个递归,第一个用于发现相等的根节点,第二个用于判断子结构是否相等。代码实现/** * */ pa...
  • sinat_33087001
  • sinat_33087001
  • 2017-08-20 21:03
  • 83
    个人资料
    • 访问:155576次
    • 积分:4928
    • 等级:
    • 排名:第6843名
    • 原创:329篇
    • 转载:0篇
    • 译文:0篇
    • 评论:80条
    博客专栏
    最新评论