【发布时间】:2022-08-19 03:32:03
【问题描述】:
void MorrisTraversal(tNode* root)
{
tNode *current, *pre;
if (root == NULL)
return;
current = root;
while (current != NULL)
if (current->left == NULL) {
current = current->right;
}
else {
pre = current->left;
while (pre->right != NULL
&& pre->right != current)
pre = pre->right;
if (pre->right == NULL) {
pre->right = current;
current = current->left;
}
else {
pre->right = NULL;
current = current->right;
}
}
}
}
我使用这个函数来遍历 bst,我还有一个函数 (delete),它将一个节点作为参数并将其从树中删除。 例如,我想从树中删除值为 4 的所有节点,是否可以使用上述函数这样做? 就像遍历树一次并删除具有特定属性的所有节点一样。 我希望我的问题很清楚... 提前致谢!
-
为清楚起见,您应该添加树节点 (tNode) 的定义。
标签: c binary-search-tree