插入实现(传指针地址的地址):
删除节点:
void InsertNode(struct node **node_ptr, struct node *newNode) {
struct node *node = *node_ptr;
if (node == NULL)
*node_ptr = newNode;
else if (newNode->value <= node->value)
InsertNode(&node->left, newNode);
else
InsertNode(&node->right, newNode);
}
删除节点:
void DeleteNode(struct node*& node) {
struct node*& temp = node;
if (node->left == NULL) {
node = node->right;
delete temp;
} else if (node->right == NULL) {
node = node->left;
delete temp;
} else {
// Node has two children - get max of left subtree
temp = node->left;
while (temp->right != NULL) {
temp = temp->right;
}
node->value = temp->value;
DeleteNode(temp);
}
}
本文介绍了二叉树中节点的插入和删除操作实现方法。包括通过递归方式实现节点的插入,以及处理三种情况下的节点删除:无子节点、有一个子节点和有两个子节点的情况。
3589

被折叠的 条评论
为什么被折叠?



