golang ----------- 二叉排序树

本文介绍了二叉排序树(又称二叉搜索树、二叉查找树)的基本概念,并重点讲解了在Golang中如何处理节点删除操作,特别是针对删除结点只有一个或两个子结点的情况进行了详细阐述。
摘要由CSDN通过智能技术生成

二叉排序树又叫二叉搜索树,二叉查找树

主要在删除时:分两种情况:

1、如果被删除结点只有一个子结点,就直接将A的子结点连至A的父结点上,并将A删除

2、如果被删除结点有两个子结点,将该结点右子数内的最小结点取代A。

代码:

package main

import "fmt"

type BST struct {
	left *BST
	value int
	right *BST
}

//查找元素
func (t *BST) Search(value int) bool {
	if t == nil {
		return false
	}
	compare := value - t.value
	if compare < 0 {
		return t.left.Search(value)
	}else if compare > 0 {
		return t.right.Search(value)
	}else {
		return true
	}
}

//添加元素
func (t *BST) Insert(value int) *BST {
	if t ==nil {
		newNode := BST{nil,value,nil}
		return &newNode
	}
	if value < t.value {
		t.left = t.left.Insert(value)
	}else{
		t.right = t.right.Insert(value)
	}
	return t
}

/*删除元素
*1、如果被删除结点只有一个子结点,就直接将A的子结点连至A的父结点上,并将A删除
*2、如果被删除结点有两个子结点,将该结点右子数内的最小结点取代A。
*/
func (t *BST) Delete(value int) *BST {
	if t =&#
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值