void ClueBinaryTree::_PreThreading(Node*& Temp,Node *&Pre) //前驱线索化
{
if (Temp != NULL) {
if (Temp->leftChild != NULL)
Temp->leftTag = 0;
else {
Temp->leftChild = Pre;
Temp->leftTag = 1;
}
if (Temp->rightChild != NULL)
Temp->rightTag = 0;
else
Temp->rightTag = 1;
if (Pre != NULL && Pre->rightTag == 1) {
Pre->rightChild = Temp;
}
Pre = Temp;
if (Temp->leftTag == 0)
_PreThreading(Temp->leftChild, Pre);
if (Temp->rightTag == 0)
_PreThreading(Temp->rightChild, Pre);
}
}
这又一个很容易忽略的易错点:就是参数部分的Pre是否应该设置成引用模式。刚开始没有设置成引用,所用导致频繁出错。那为什么加上引用就可以正常执行了呢?
错因分析:如图所示。