数据结构中序穿线二叉树中出现的一个问题

本文探讨了中序穿线二叉树构造函数的实现细节,并通过实例分析了递归过程中可能出现的栈溢出问题。文章指出,在复制二叉树结构时必须注意节点的tag属性,以避免无限递归。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据结构之中序穿线二叉树的构造函数:

template<typename Elemtype>
void threadtree<Elemtype>::construct_function_aux(nodepointer &p, nodepointer otherL)
{
    if (otherL)
    {

        p = new node;
        p->data = otherL->data;
        p->ltag = otherL->ltag;
        p->rtag = otherL->rtag;
        **if(otherL->ltag==0)**
        construct_function_aux(p->lchild, otherL->lchild);
        **if(otherL->rtag==0)**
        construct_function_aux(p->rchild, otherL->rchild);
    }
}
template<typename Elemtype>
threadtree<Elemtype>::threadtree(const threadtree<Elemtype>& otherD)
{
    construct_function_aux(root, otherD.root);
    sequentialtothreadtree_aux2(root);
}

今天用了快一个小时寻找原来版本中出现的stack overflow 问题,最后发现,我直接用了中序穿线来拷贝初始化,没有考虑tag的问题,导致无限递归。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值