加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

golang 写二叉查找树练习

发布时间:2020-12-16 18:50:59 所属栏目:大数据 来源:网络整理
导读:package mainimport ("fmt")type item struct {key int}type tree struct {lchild,rchild *treeitem itemcount int}func compare(x,y item) int {var ret intswitch {case x.key y.key:ret = 1case x.key == y.key:ret = 0case x.key y.key:ret = -1}return

package main

import (
	"fmt"
)

type item struct {
	key int
}

type tree struct {
	lchild,rchild *tree
	item           item
	count          int
}

func compare(x,y item) int {
	var ret int
	switch {
	case x.key > y.key:
		ret = 1
	case x.key == y.key:
		ret = 0
	case x.key < y.key:
		ret = -1
	}
	return ret
}

func create(T *tree,x item) *tree {
	if T == nil {
		T = new(tree)
		T.item = x
		T.count = 1
	} else if compare(T.item,x) == 1 {
		T.lchild = create(T.lchild,x)
	} else if compare(T.item,x) == 0 {
		T.count++
	} else {
		T.rchild = create(T.rchild,x)
	}
	return T
}

func search(T *tree,x item) *tree {
	if T == nil {
		return nil
	} else if compare(T.item,x) == 1 {
		return search(T.lchild,x) == -1 {
		return search(T.rchild,x)
	}
	return T
}

func main() {
	var root *tree
	t := create(root,item{89})
	root = t

	iarr := []int{1,89,44,98,54,24,96,34,74,69,4,0}

	for _,i := range iarr {
		//fmt.Println(i)
		create(root,item{i})
	}

	s := search(root,item{96})
	fmt.Println(s)
	s = search(root,item{4})
	fmt.Println(s)
	s = search(root,item{0})
	fmt.Println(s)
	s = search(root,item{989})
	fmt.Println(s)
	fmt.Println(root)
}


结果:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读