温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

二叉树操作

发布时间:2020-05-25 23:32:47 来源:网络 阅读:371 作者:类似简单 栏目:编程语言
package main import "fmt" type Node struct { Key int Left * Node Right * Node } func (n *Node) Insert(key int) { if key < n.Key{ if n.Left == nil{ n.Left = &Node{Key:key} } n.Left.Insert(key) }else if key > n.Key{ if n.Right == nil{ n.Right = &Node{Key:key} } n.Right.Insert(key) } } //中序打印 func (n * Node)print() { if n == nil{ return } n.Left.print() fmt.Println(n.Key) n.Right.print() } //前序打印 func (n * Node)printpre() { if n == nil{ return } fmt.Println(n.Key) n.Left.printpre() n.Right.printpre() } //后序打印 func (n * Node)printend() { if n == nil{ return } n.Left.printend() n.Right.printend() fmt.Println(n.Key) } //查询 func (n * Node)Search(key int) bool { if n == nil{ return false } if n.Key < key{ n.Right.Search(key) }else if n.Key > key{ return n.Left.Search(key) } return true } //删除 func (n * Node)Delete(key int) *Node { if n == nil{ return nil } if n.Key < key{ n.Right = n.Right.Delete(key) }else if n.Key > key{ n.Left = n.Left.Delete(key) }else { if n.Left == nil{ return n.Right }else if n.Right == nil{ return n.Left }else { min := n.Right.Min() n.Key = min n.Right = n.Right.Delete(min) } } return n } //求最小值 func (n *Node)Min() int { if n.Left==nil{ return n.Key } return n.Left.Min() } func main() { root := &Node{Key:8} root.Insert(3) root.Insert(10) root.Insert(1) root.Insert(6) root.Insert(14) root.Insert(4) root.Insert(7) root.Insert(13) fmt.Println("=====================中序打印==================================") root.print() fmt.Println("======================前序打印================================") root.printpre() fmt.Println("=======================后序打印================================") root.printend() if root.Search(10){ fmt.Println("found") }else { fmt.Println("not found") } if root.Search(100){ fmt.Println("found") }else { fmt.Println("not found") } if root.Search(0){ fmt.Println("found") }else { fmt.Println("not found") } root.Delete(6) root.Delete(3) root.print() }
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI