golang 写二叉查找树练习

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)
	} else if compare(T.item, 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, 96, 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)
}


结果:


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值