zoukankan      html  css  js  c++  java
  • <剑指offer> 第15题

    题目:

    输入两棵二叉树A和B,判断B是不是A的子结构

    思路:

    分为两步:

    (1)在树A中找到和B的根节点的值一样的节点R

    (2)判断树A中以R为根节点的子树是不是包含和树B一样的结构

    public class Fifteenth {
        public static class BinaryTreeNode{
            int value;
            BinaryTreeNode left;
            BinaryTreeNode right;
        }
    
        public static boolean hasSubtree(BinaryTreeNode root1, BinaryTreeNode root2){
            if(root1 == root2){
                return true;
            }
            if(root2 == null){
                return true;
            }
            if(root1 == null){
                return false;
            }
    
            //记录匹配结果
            boolean result = false;
    
            //如果节点的值相等就调用匹配方法
            if(root1.value == root2.value){
                result = match(root1, root2);
            }
    
            //如果匹配就直接返回结果
            if(result){
                return true;
            }
    
            return hasSubtree(root1.left, root2) || hasSubtree(root1.right, root2);
        }
    
        public static boolean match(BinaryTreeNode root1, BinaryTreeNode root2){
            //只要两个对象是同一个就返回true
            if(root1 == root2){
                return true;
            }
            if(root2 == null){
                return true;
            }
            if(root1 == null){
                return false;
            }
    
            if(root1.value == root2.value){
                return match(root1.left, root1.left) && match(root1.right, root2.right);
            }
    
            return false;
        }
    }
  • 相关阅读:
    SQL Server 代理配置
    HTTP request smuggling 学习笔记
    hashcat使用记录
    centos安装pip
    kali linux 使用记录
    ss搭建以及proxychains使用记录
    Linux命令后台运行
    XXE小结
    子域名枚举艺术深度剖析
    Excel RCE on macOS
  • 原文地址:https://www.cnblogs.com/HarSong13/p/11329758.html
Copyright © 2011-2022 走看看