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

    public class Solution {
    public boolean HasSubtree(TreeNode root1,TreeNode root2) {

    boolean flag=false;
    if(root1!=null&&root2!=null){
    if(root1.val==root2.val) flag=Dosesame(root1,root2);//对当前节点执行匹配
    if(!flag)flag=HasSubtree(root1.left,root2);//当前节点匹配失败 更新root1节点到左子节点
    if(!flag)flag=HasSubtree(root1.right,root2);//左子节点也不成功时 进入右子节点
    }
    return flag;
    }
    public boolean Dosesame(TreeNode root1,TreeNode root2){
    if(root1==null&&root2!=null)return false; //只匹配了一部分
    if(root2==null)return true; //匹配完成
    if(root1.val!=root2.val)return false;//匹配过程中 任何地方发生 匹配都失败

    return Dosesame(root1.left,root2.left)&&Dosesame(root1.right,root2.right);//当前节点值相等 再递归同时匹配左右节点
    }
    }

  • 相关阅读:
    dp
    数学分析 + 容斥原理
    容斥
    并查集
    矩阵hash + KMP
    扫描线
    位运算
    2015 Multi-University Training Contest 5 1009 MZL's Border
    iOS ZipArchive文件解压缩
    iOS GCD倒计时
  • 原文地址:https://www.cnblogs.com/bolianggufeng/p/8534193.html
Copyright © 2011-2022 走看看