剑指 Offer 26. 树的子结构

Posted 易小顺

tags:

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

算法记录

LeetCode 题目:

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



说明

一、题目

  B是A的子结构, 即 A中有出现和B相同的结构和节点值。
  输入:A = [1,2,3], B = [3,1]
  输出:false

二、分析

  • 两棵树需要相等,则对应的每个节点上的数据也要相等。
  • 也就是说我们遍历整棵树,如果当前节点的值和需要比较的 B 树的根节点值相等,我们就将此节点作为根的子树和 B 树进行判等。
  • 要注意判定树相等返回值结果,如果 B 树已经为空了,则没有必要进行下一步的判断(不管是否还有剩余的);但是如果 B 不空、 A 空了,那就直接 false
/**
 * Definition for a binary tree node.
 * public class TreeNode {
 *     int val;
 *     TreeNode left;
 *     TreeNode right;
 *     TreeNode(int x) { val = x; }
 * }
 */
class Solution {
    public boolean equal(TreeNode A, TreeNode B) {
        if(B == null) return true;
        if(A == null) return false;
        return A.val == B.val && equal(A.left, B.left) && equal(A.right, B.right);
    }

    public boolean isSubStructure(TreeNode A, TreeNode B) {
        if(A == null || B == null) return false;
        if(A.val == B.val && equal(A.left, B.left) && equal(A.right, B.right)) return true;
        return isSubStructure(A.left, B) || isSubStructure(A.right, B);
    }
}

总结

熟悉两棵树相等的递归实现。

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

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

剑指 Offer 26. 树的子结构 / 剑指 Offer 27. 二叉树的镜像 / 剑指 Offer 28. 对称的二叉树 / 剑指 Offer 29. 顺时针打印矩阵

无取巧解法,易于理解!剑指 Offer 26. 树的子结构

无取巧解法,易于理解!剑指 Offer 26. 树的子结构

剑指Offer打卡26.树的子结构

剑指Offer打卡26.树的子结构