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)
}

结果:

《golang 写二叉查找树练习》

    原文作者:二叉查找树
    原文地址: https://blog.csdn.net/u014798316/article/details/38404643
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞