二叉搜索树的插入关键是要找到元素应该插入的位置,可以采用与Find类似的方法。
二叉搜索树的删除则要考虑三种情况:
1.要删除的是叶节点:直接删除,并再修改其父节点指针置为NULL
2.要删除的节点只有一个孩子的节点:将其父节点的指针指向要删除节点的孩子节点
3.要删除的节点有左、右两棵子树,用另一节点替代被删除的节点:右子树的最小元素或者左子树的最大元素
#include <stdio.h>
#include <stdlib.h>
#define ElementType int
typedef struct Node {
ElementType data;
struct Node *leftSubTree; //左子树
struct Node *rightSubTree; //右子树
}BinaryTree;
//创建二叉树节点
BinaryTree* CreateBinaryTree(data) {
BinaryTree* t = (BinaryTree*)malloc(sizeof(BinaryTree));
if (!t) {