Go语言实现二叉树(BinaryTree)

本文介绍了如何用Go语言实现二叉树的数据结构,并提供了中序遍历的代码实现,包括具体的实现代码、测试代码及展示的测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Go语言实现二叉树(BinaryTree)


        二叉树的操作原理:取第一个节点为根节点,比根节点小的数放在根节点的左子树(左节点),比根节点大的数放在根节点的右子数(右节点),取得的时候按照中序遍历的方式(左-中-右)。


        使用go语言实现了二叉树的一些基本功能,存储节点数据的类型为int。(有什么建议或者不懂的地方可以留言)

实现代码如下:
//节点结构体
type Node struct {
	data int
	leftNode *Node
	rightNode *Node
}
//二叉树结构体
type BinaryTree struct {
	root *Node
	count int
}
//查询时记录下标
var i int=0
//添加节点
func (node *Node)addNode(newNode *Node){
	if node.data>newNode.data{
		if node.leftNode==nil{
			node.leftNode=newNode
		}else{
			node.leftNode.addNode(newNode)
		}
	}else{
		if node.rightNode==nil{
			node.rightNode=newNode
		}else{
			node.rightNode.addNode(newNode)
		}
	}
}
func (bt *BinaryTree)add(data int){
	var newNode Node
	newNode.data=data
	if bt.root==nil{
		bt.root=&newNode
	}else{
		bt.root.addNode(&newNode)
	}
	bt.count++
}
//遍历二叉树(中序:左-中-右),返回切片类型
func (node *Node)toArrayNode(datas []int){
	if node.leftNode!=nil{
		node.leftNode.toArrayNode(datas)
	}
	datas[i]=node.data
	i++
	if node.rightNode!=nil{
		node.rightNode.toArrayNode(datas)
	}
}
func (bt *BinaryTree)toArray()[]int{
	if bt.root==nil{
		return nil
	}
	datas:=make([]int,bt.count)
	bt.root.toArrayNode(datas)
	return datas
}
//返回该树的长度
func (bt *BinaryTree)size()int{
	return bt.count
}
测试代码如下:
func main(){
	var binaryTree BinaryTree
	binaryTree.add(5)
	binaryTree.add(11)
	binaryTree.add(8)
	binaryTree.add(9)
	binaryTree.add(1)
	binaryTree.add(3)
	binaryTree.add(20)
	fmt.Println(binaryTree.size())
	fmt.Println(binaryTree.toArray())
}
测试结果如下:

测试结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值