树的子结构

面试题目:输入两颗二叉树A,B,判断B是不是A的子结构;

先找到B根节点对应的A的节点,在判断是否相同。

主要部分代码:

bool ifTheSameTree(BiTree &t1,BiTree &t2)
{
    if (t2 == NULL)return true;//B树为空,肯定是相同的树
    if(t1 == NULL)return false;
    if (t1->value!=t2->value)return false;//节点不同,不是
    else
    {
        return ifTheSameTree(t1->lchild,t2->lchild) & ifTheSameTree(t1->rchild,t2->rchild);//左右均为true返回true
    }
}
bool isSubBinTree(BiTree &t1,BiTree &t2)
{
    bool result = false;
    if(t1 != NULL && t2 != NULL)
    {
        if (t1->value == t2->value)//根节点相同,就判断A,B树是否一样
        {
            result = ifTheSameTree(t1,t2);
        }
        if(!result)result = isSubBinTree(t1->lchild,t2);//判断左子树
        if (!result) result = isSubBinTree(t1->rchild,t2);//判断右子树
    }
    return result;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值