golang实现二叉搜索树
生活随笔
收集整理的這篇文章主要介紹了
golang实现二叉搜索树
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
數(shù)據(jù)結(jié)構(gòu)
首先我們定義需要的數(shù)據(jù)結(jié)構(gòu)。注意,TreeNode的左右節(jié)點(diǎn)都是TreeNode type的,而樹只有一個(gè)Root數(shù)據(jù)域,為TreeNode type
Insert
向二叉搜索樹中插入元素,首先要找到插入的位置,然后再插入。這里注意我們的實(shí)現(xiàn)方法為給TreeNode和BinarySearchTree這兩個(gè)type添加方法。
需要注意給type添加方法的方式,同時(shí)還要注意,如果你要改變方法調(diào)用者,則需要使用指針
遍歷
樹的遍歷有前序,后序,中序等等。這里以中序?yàn)槔W⒁鈙lice與slice指針的不同
最大最小值
func (tree BinarySearchTree) FindMin() int {node := tree.Rootfor {if node.Left != nil {node = node.Left}else{return node.Value}} }func (tree BinarySearchTree) FindMax() int {node := tree.Rootfor {if node.Right != nil {node = node.Right}else{return node.Value}} }查找
func (tree BinarySearchTree) Contains(v int) bool {node := tree.Rootfor {if node == nil{return false}else if (node.Value == v) {return true}else if (node.Value > v){node = node.Left}else{node = node.Right}} }轉(zhuǎn)載于:https://www.cnblogs.com/nyist-xsk/p/11353073.html
總結(jié)
以上是生活随笔為你收集整理的golang实现二叉搜索树的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据结构之单链表(golang版)
- 下一篇: 洛谷P1352 没有上司的舞会题解