1 在A和B中对比根节点
2 如果根节点相同,遍历该位置的其他节点,b中全部相同时,返回ture
3 如果对应位置的节点值不同时,退出,继续在A中寻找和B相同的根节点,递归遍历子节点
<?php
/*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* @param pRoot1 TreeNode类
* @param pRoot2 TreeNode类
* @return bool布尔型
*/
function HasSubtree( $pRoot1 , $pRoot2 )
{
$falg = false;
if(($pRoot1!=NULL)&&($pRoot2!=NULL)){
if($pRoot1->val==$pRoot2->val){
$falg= HasSubtreetty($pRoot1,$pRoot2);
}
if(!$falg){
$falg= HasSubtree($pRoot1->left,$pRoot2);
}
if(!$falg){
$falg= HasSubtree($pRoot1->right,$pRoot2);
}
}
return $falg;
}
function HasSubtreetty($pNode1 , $pNode2){
if($pNode2==null){
return true;
}
if(($pNode1==null)&&($pNode2!=null)){
return false;
}
if($pNode1->val!=$pNode2->val){
return false;
}
return HasSubtreetty($pNode1->left,$pNode2->left)&&HasSubtreetty($pNode1->right,$pNode2->right);
}