二叉树的实现及递归遍历(golang)

本文介绍了如何在Golang中实现二叉树的数据结构,并详细阐述了利用递归方法进行前序、中序和后序遍历的过程。对于二叉树的初学者或Golang开发者来说,这是一篇不错的参考资料。
摘要由CSDN通过智能技术生成

二叉树的实现以及递归遍历(Golang)

欢迎指导
package main

import "fmt"

//定义树
type binarySearchTree struct {
	value            int
	lchild, rchild *binarySearchTree
}

//新树
func NewBinarySearchTree(rootVal int) *binarySearchTree {
	//如果不写全,要指定 Key
	return &binarySearchTree{value:rootVal}
}

//插入树(把节点看成一个最简单的树)
func (bst *binarySearchTree) Insert(val int) *binarySearchTree {
	if bst == nil {
		return NewBinarySearchTree(val)
	} else {
		if val < bst.value {
			bst.lchild = bst.lchild.Insert(val)
		} else {
			bst.rchild = bst.rchild.Insert(val)
		}
		return bst
	}
}
//先序遍历
func (bst *binarySearchTree) PreOrder() {
	if bst == nil {
		return
	} else {
		fmt.Printf("%d", bst.value)
		bst.lchild.PreOrder()
		bst.rchild.PreOrder()
	}
}
//中序遍历(从小到大排列)
func (bst *binarySearchTree) InOrder() {

	if bst == nil {
		return
	} else {
		bst.lchild.InOrder()
		fmt.Printf("%d", bst.value)
		bst.rchild.InOrder()
	}
}
//后序遍历
func (bst *binarySearchTree) PostOrder() {
	if bst == nil {
		return
	} else {
		bst.lchild.PostOrder()
		bst.rchild.PostOrder()
		fmt.Printf("%d", bst.value)
	}
}

func main() {
	//定义切片存放树的元素
	array := []int{6, 3, 8, 2, 5, 1, 7}

	//定义bst指向一个二叉搜索树
	var bst *binarySearchTree

	//array --> tree
	for _, v := range array {
		bst = bst.Insert(v)
	}

	//遍历
	bst.PreOrder()
	fmt.Println()

	bst.InOrder()
	fmt.Println()

	bst.PostOrder()
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值