1. 程式人生 > >go二叉樹排序

go二叉樹排序

    二叉樹排序:一種基於二叉樹的排序演算法。

package main

import (      "fmt" )
type tree struct {     value int     left, right * tree
}
func Sort (values [] int ) {      var root * tree      for _ , v := range values {          root
= add (root, v)     }      appendValues (values[: 0 ], root) }
func appendValues (values [] int , t * tree)[] int {      if
t != nil {          values = appendValues (values, t.left)          values = append (values, t.value)          values = appendValues (values, t.right)     }      return values }
func add (t * tree, value int ) * tree {      if t == nil {          t = new (tree)          t.value = value          return t     }      if value < t.value {          t.left = add (t.left, value)     } else {          t.right = add (t.right, value)     }      return t }
func main () {      values := [] int { 4 , 5 , 3 , 6 , 1 , 8 , 7 , 9 , 0 , 2 }      Sort (values)     fmt. Printf ( "%d \n " , values) }