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);
}