题目描述
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)
<?php
/*class TreeNode{
var $val;
var $left = NULL;
var $right = NULL;
function __construct($val){
$this->val = $val;
}
}*/
function HasSubtree($pRoot1, $pRoot2)
{
// write code here
$result=false;
//只有当两个树都不为空时 才继续判断
if($pRoot2!==null && $pRoot1!==null){
//如果两个根节点匹配上了
if($pRoot1->val==$pRoot2->val){
$result=PanDuan($pRoot1, $pRoot2);
}
//如果根节点匹配不到 去左子树看看是否能匹配到
if(!$result){
$result = HasSubtree($pRoot1->left, $pRoot2);
}
//如果根节点匹配不到 去右子树看看是否能匹配到
if(!$result){
$result = HasSubtree($pRoot1->right, $pRoot2);
}
}
return $result;
}
function PanDuan($node1,$node2){
if($node2==null){
//说明子树2查找完毕
return true;
}
if($node1==null){
return false;
}
if($node1->val != $node2->val){
return false;
}
return PanDuan($node1->left,$node2->left) && PanDuan($node1->right,$node2->right);
}