输入两棵二叉树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)
}
简单,难于理解!!!!
👆 👆 以上就是个人对【树的子结构】的代码解法和方法解读。
为了女朋友先提交了哈!明日再做分析加更新==》借过,一键三连哟!!!