BST是二叉搜索树(Binary Search Tree)的缩写,是一种常用的数据结构,它具有以下特点:
在C#中删除BST中的节点可以按照以下步骤进行:
删除节点的操作可以使用递归或迭代的方式实现。以下是一个使用递归方式删除BST节点的示例代码:
class TreeNode
{
public int val;
public TreeNode left;
public TreeNode right;
public TreeNode(int val)
{
this.val = val;
this.left = null;
this.right = null;
}
}
class BST
{
private TreeNode root;
public BST()
{
this.root = null;
}
public void Insert(int val)
{
this.root = InsertNode(this.root, val);
}
private TreeNode InsertNode(TreeNode node, int val)
{
if (node == null)
{
return new TreeNode(val);
}
if (val < node.val)
{
node.left = InsertNode(node.left, val);
}
else if (val > node.val)
{
node.right = InsertNode(node.right, val);
}
return node;
}
public void Delete(int val)
{
this.root = DeleteNode(this.root, val);
}
private TreeNode DeleteNode(TreeNode node, int val)
{
if (node == null)
{
return null;
}
if (val < node.val)
{
node.left = DeleteNode(node.left, val);
}
else if (val > node.val)
{
node.right = DeleteNode(node.right, val);
}
else
{
if (node.left == null && node.right == null)
{
node = null;
}
else if (node.left == null)
{
node = node.right;
}
else if (node.right == null)
{
node = node.left;
}
else
{
TreeNode minNode = FindMinNode(node.right);
node.val = minNode.val;
node.right = DeleteNode(node.right, minNode.val);
}
}
return node;
}
private TreeNode FindMinNode(TreeNode node)
{
while (node.left != null)
{
node = node.left;
}
return node;
}
}
这是一个简单的BST类,包含了插入和删除节点的方法。你可以使用Insert
方法向BST中插入节点,使用Delete
方法从BST中删除节点。
关于BST的更多信息,你可以参考腾讯云文档中的二叉搜索树(BST)。
请注意,以上代码仅为示例,实际使用时可能需要根据具体情况进行修改和优化。
领取专属 10元无门槛券
手把手带您无忧上云