《剑指Offer》题目:树的子结构

Posted VictorWei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了《剑指Offer》题目:树的子结构相关的知识,希望对你有一定的参考价值。

题目描述:树的子结构

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

题目分析:此题可以拆成两题,1.在二叉树中查找是否存在某个结点;2.判断两个二叉树是否有相同的结构

 

Java代码:

class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;
    }

}
public class HasSubtree {
    public boolean hasSubtree(TreeNode root1,TreeNode root2) {
        boolean res = false;
        if (root1 != null && root2 !=null){
            if (root1.val == root2.val){
                //这时候判断两个二叉树是否有相同的结构
                res = isAHasB(root1, root2);
            }
            if (!res){
                res = hasSubtree(root1.left,root2);
            }
            if (!res){
                res = hasSubtree(root1.right, root2);
            }
        }
        return res;
    }
   //判断两个二叉树是否有相同的结构
public boolean isAHasB(TreeNode root1,TreeNode root2){ if (root2 == null) return true; if (root1 == null) return false; if (root1.val != root2.val) return false; return isAHasB(root1.left, root2.left) && isAHasB(root1.right, root2.right); } }

 

以上是关于《剑指Offer》题目:树的子结构的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode(剑指 Offer)- 26. 树的子结构

剑指OFFER 树的子结构

剑指offer树的子结构python

剑指offer——树的子结构

剑指offer:树的子结构

剑指offer 树的子结构