剑指offer--17树的子结构

24 篇文章 0 订阅
20 篇文章 0 订阅
public class DoesTree1HaveTree2 {
/*
* 判断二叉树B是不是二叉树A的子树
*/
public boolean doesTree1HaveTree2(BinaryTreeNode root1,BinaryTreeNode root2)
{
if(root2==null)//遍历到子树的叶子结点则证明是子树
return true;
else
if(root1==null)
return false;
if(root1.data!=root2.data)
return false;
else {//当左右结点都相等时才证明有子树
return doesTree1HaveTree2(root1.leftNode, root2.leftNode) && doesTree1HaveTree2(root1.rightNode, root2.rightNode);
}
}
public boolean hasSubTree(BinaryTreeNode root1,BinaryTreeNode root2)
{
if(root2==null)
return true;
else
if(root1==null)
return false;
boolean result=false;//初始化没有找到两个树的根节点不相等
if(root1!=null && root2!=null)
{
if(root1.data==root2.data)//当找到根节点相等时,再判断是否有子树
result=doesTree1HaveTree2(root1, root2);
if(!result)//如果两个根节点不相等,递归调用hassubtree(),直到找到根节点相等
return hasSubTree(root1.leftNode, root2) || hasSubTree(root1.rightNode, root2);
}
return result;
}
}


class BinaryTreeNode
{
int data;
BinaryTreeNode leftNode;
BinaryTreeNode rightNode;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值