题目
输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)
B是A的子结构, 即 A中有出现和B相同的结构和节点值。
例如:
给定的树 A:
示例1
树 A
3
/ \
4 5
/ \
1 2
树 B
4
/
1
题解
递归
假如树B是树A的子结构,那一定有A === B ; 或者 A.left = B || A.right = B;
根据这个思路编辑代码如下:
代码
var isSubStructure = function(A, B) {
if(A === null || B === null) return false;
return helper(A,B) || isSubStructure(A.left,B) || isSubStructure(A.right,B)
function helper(root,node){
if(node === null) return true;
if(root === null) return false;
if(node.val !== root.val) return false;
return helper(root.left,node.left) && helper(root.right,node.right)
}
};