描述
输入两棵二叉树A,B,判断B是不是A的子结构。(我们约定空树不是任意一个树的子结构)
假如给定A为{8,8,7,9,2,#,#,#,#,4,7},B为{8,9,2},2个树的结构如下,可以看出B是A的子结构
基本思路
先写一个判断两个树是否相同的函数
再进行递归
/* function TreeNode(x) {
this.val = x;
this.left = null;
this.right = null;
} */
function HasSubtree(pRoot1, pRoot2)
{
// write code here
if(!pRoot1||!pRoot2) return false
return isSame(pRoot1,pRoot2)||HasSubtree(pRoot1.left,pRoot2)||HasSubtree(pRoot1.right,pRoot2)
function isSame(root1,root2){
//第二棵树已经比完了,完全相同
if(!root2) return true
//第一棵树已经没了,第二棵树还有,则不同
if(!root1) return false
if(root1.val!==root2.val) return false
return isSame(root1.left,root2.left)&&isSame(root1.right,root2.right)
}
}
module.exports = {
HasSubtree : HasSubtree
};