TTreeNode递归疑惑
看别人SourceCode,在别处调用下面这个函数,函数代码如下:
TTreeNode* TTPRForm::delete_tree_node(TTreeNode * aNode)
{
TTreeNode* tmpNode;
TTreeNode* ChildNode = aNode->GetLastChild();
while (ChildNode) {
ChildNode = delete_tree_node(ChildNode);
}
tmpNode = aNode->Parent->GetPrevChild(aNode);
aNode->Delete();
return tmpNode;
}
以上不大明白,希望帮忙注释讲解。谢谢... 递归
[解决办法]
//删除给定节点以下所有子节点包括给定节点
TTreeNode* TTPRForm::delete_tree_node(TTreeNode * aNode)
{
TTreeNode* tmpNode;
TTreeNode* ChildNode = aNode->GetLastChild(); //找到aNode最后一个子节点
while (ChildNode) { //判断最后一个子节点是否为空
ChildNode = delete_tree_node(ChildNode); //如果不为NULL,在递归查找子节点
}
tmpNode = aNode->Parent->GetPrevChild(aNode);
aNode->Delete();
return tmpNode;
}