美文网首页
算法学习-二叉树寻找子树

算法学习-二叉树寻找子树

作者: 越过_1b61 | 来源:发表于2018-10-02 11:24 被阅读0次

以下是代码:


public class Solution {

    //搜索头结点相同的方法

    public boolean HasSubtree(TreeNode root1,TreeNode root2) {

        boolean result=false;

//如果两个结点有一个已经遍历完了,那么返回false

        if(root2!=null&&root1!=null){

//如果root1的值和root2的值相同,则result为判断其全等的结果

            if(root1.val==root2.val)

            {result=AllEqual(root1,root2);}

//如果这时result依旧不成立的话,那么说明没找到,继续在左孩子中找

            if(!result)

            {result=HasSubtree(root1.left,root2);}

//还没找到就在右孩子中找

            if(!result)

            {result=HasSubtree(root1.right,root2);}

        }

        return result;

    }

//当头结点相同时,验证是否全结点相同

    public static boolean AllEqual(TreeNode root1,TreeNode root2){

        if(root2==null)//表示遍历完树2了

        {

            return true;

        }

        if(root1==null){//代表树一已经遍历完了但是树二还没有遍历完

            return false;

        }

//这一步特别说明一下:这里是简化写法,不易理解。

//事实上一共有三种情况:1)root1==null,root2==null 都遍历完了,说明相等 //2)root1!=null,root2=null 一没遍历完,二却没了,说明相等  3) root1==null,root2!=null

//一遍历完了,二却没有,说明不等

        if(root1.val!=root2.val)

        {

            return false;

        }

        return AllEqual(root1.left,root2.left)&&AllEqual(root1.right,root2.right);

    }

}

相关文章

  • Algorithm小白入门 -- 二叉树

    二叉树二叉树构造二叉树寻找重复子树 1. 二叉树 基本二叉树节点如下: 很多经典算法,比如回溯、动态规划、分治算法...

  • 树--(二叉树、B树、B+树)

    二叉树 二分法形成的树右子树大于左子树,长于左子树平衡二叉树:右子树比左子树高度差不超过1 算法效率 O(logN...

  • 算法学习-二叉树寻找子树

    以下是代码: public class Solution { //搜索头结点相同的方法 public bo...

  • 二叉树

    本文内容学习自JavaScript实现二叉树 二叉树 二叉树是每个节点最多有两个子树的树结构。通常子树被称左子树和...

  • 二叉树--自对称判断

    今天学习的算法是判断二叉树是否自对称。 题目介绍 对称二叉树的特点是将跟节点的左右子树翻转后,树与原来保持完全一致...

  • 数据结构与算法(二叉树)

    二叉树 二叉树的基本概念 二叉树是每个节点最多有两个子树的树结构,通常子树被称作“左子树”和“右子树”。 二叉树的...

  • 二叉树算法积累(二叉树镜像/子树判断)

    二叉树算法积累 存在二叉树A.B判断二叉树B是否是A的子树。 注意问题边界条件的控制。 A为空直接返回False....

  • 二叉树相关

    二叉树是一种常用的数据结构,其涉及的相关算法也较多,简单做一些总结在二叉树中,每个节点最多只有两个子树,即左子树和...

  • 二叉树

    二叉树 二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(...

  • 数据结构与算法(二叉树)

    二叉树 1.基本概念 二叉树是每个节点最多有两个子树的树结构。通常子树被称作为"左子树"和”右子树。 2.二叉树的...

网友评论

      本文标题:算法学习-二叉树寻找子树

      本文链接:https://www.haomeiwen.com/subject/aivnoftx.html