[路飞]_算法·每日解读--树的子结构

133 阅读1分钟

题解: 剑指 Offer 26. 树的子结构

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

B是A的子结构, 即 A中有出现和B相同的结构和节点值。

示例:

输入:A = [1,2,3], B = [3,1]
输出:false
输入:A = [3,4,5,1,2], B = [4,1]
输出:true

题意解读:

  • 要想解决本题,首先要理解二叉树以数组的形式存储时是以【根左右】的结构进行存储的,再进行子结构是否包含的判定中特别要注意

代码搞起:

var isSubStructure = function(A, B) {
    return (!!A && !!B) && (recur(A,B) || isSubStructure(A.left,B)|| isSubStructure(A.right,B))
};
​
recur = function(A,B){
    if(!B) return true
    if(!A || A.val !== B.val) return false
    return recur(A.left,B.left) && recur(A.right,B.right)
}

简单,难于理解!!!!

👆 👆 以上就是个人对【树的子结构】的代码解法和方法解读。

为了女朋友先提交了哈!明日再做分析加更新==》借过,一键三连哟!!!