树的子结构
题目描述:
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构) B是A的子结构, 即 A中有出现和B相同的结构和节点值。
示例:
输入: A = [1,2,3], B = [3,1]
输出: false
思路:
递归比较 如果a和b的元素相同,再分别比较a和b的左右节点,依次类推。 需要注意的是 如果a为空b不为空 a不为空b为空这两个边界
代码:
/**
* Definition for a binary tree node.
* function TreeNode(val) {
* this.val = val;
* this.left = this.right = null;
* }
*/
/**
* @param {TreeNode} A
* @param {TreeNode} B
* @return {boolean}
*/
const isContain=(A,B)=>{
if(!A&&B){
return false
}
if(!B){
return true
}
if(A.val===B.val){
return isContain(A.left,B.left)&&isContain(A.right,B.right)
}else{
return false;
}
}
var isSubStructure = function(A, B) {
if(!A||!B){
return false
}else{
if(A.val===B.val&&isContain(A,B)){
return true
}else{
return isSubStructure(A.left,B)||isSubStructure(A.right,B)
}
}
};