Αυτή η παλιά άσκηση με τα δυαδικά δέντρα…

Το κλασσικό σορτάρισμα με δυαδικό δέντρο σε Golang.

Ναι, η test case είναι αυτή και ναι, την εμπνεύστηκα απο αυτό το σκέτς που καταλάβατε.

package main

import (
 "fmt"
 "strings"
 )

type TreeNode struct {
 myText string
 lnode *TreeNode
 rnode *TreeNode
 }

func AddLeaf(x *TreeNode, myStr string) {
 var newNode TreeNode
 if x.myText > myStr {
 if x.lnode == nil {
 newNode = TreeNode{myText: myStr}
 x.lnode = &newNode
 } else {
 AddLeaf(x.lnode, myStr)
 }
 } else {
 if x.rnode == nil {
 newNode = TreeNode{myText: myStr}
 x.rnode = &newNode
 } else {
 AddLeaf(x.rnode, myStr)
 }

}

}

func PrintSort(x *TreeNode) {
 if x.lnode != nil {
 PrintSort(x.lnode)
 }
 fmt.Println(x.myText)
 if x.rnode != nil {
 PrintSort(x.rnode)
 }
 }

func main() {
 var mytree TreeNode
 wordlist := strings.Split("ΑΕΤΟΣ ΑΔΡΑΧΤΙ ΛΙΜΕΝΟΦΥΛΑΚΑΣ ΝΥΧΟΚΟΠΤΗΣ ΜΠΡΕΛΟΚ ΑΝΕΜΟΓΚΑΣΤΡΙ ΑΒΕΣΣΑΛΩΜ ΙΣΤΙΟΠΛΟΟΣ ΧΩΡΙΣΤΡΑ", " ")

mytreecur := &mytree
 mytreecur.myText = wordlist[0]
 for i := 1; i < len(wordlist); i++ {
 AddLeaf(mytreecur, wordlist[i])
 }

PrintSort(mytreecur)

}
Advertisements

Σχολιάστε

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Google

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση /  Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση /  Αλλαγή )

Σύνδεση με %s