mirror of https://github.com/01-edu/public.git
fix(checkpoint) add imports and functions needed
This commit is contained in:
parent
6d157ff6fd
commit
3184f19ef8
|
@ -2,22 +2,59 @@ package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"piscine"
|
||||||
)
|
)
|
||||||
|
|
||||||
type TreeNode struct {
|
|
||||||
Left, Right, Parent *TreeNode
|
|
||||||
Data string
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
root := &TreeNode{Data: "4"}
|
root := &piscine.TreeNode{Data: "4"}
|
||||||
BTreeInsertData(root, "1")
|
BTreeInsertData(root, "1")
|
||||||
BTreeInsertData(root, "7")
|
BTreeInsertData(root, "7")
|
||||||
BTreeInsertData(root, "5")
|
BTreeInsertData(root, "5")
|
||||||
node := BTreeSearchItem(root, "4")
|
node := BTreeSearchItem(root, "4")
|
||||||
fmt.Println("Before delete:")
|
fmt.Println("Before delete:")
|
||||||
BTreeApplyInorder(root, fmt.Println)
|
BTreeApplyInorder(root, fmt.Println)
|
||||||
root = BTreeDeleteNode(root, node)
|
root = piscine.BTreeDeleteNode(root, node)
|
||||||
fmt.Println("After delete:")
|
fmt.Println("After delete:")
|
||||||
BTreeApplyInorder(root, fmt.Println)
|
BTreeApplyInorder(root, fmt.Println)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func BTreeInsertData(root *piscine.TreeNode, data string) *piscine.TreeNode {
|
||||||
|
if root == nil {
|
||||||
|
return &piscine.TreeNode{Data: data}
|
||||||
|
}
|
||||||
|
|
||||||
|
if data < root.Data {
|
||||||
|
root.Left = BTreeInsertData(root.Left, data)
|
||||||
|
root.Left.Parent = root
|
||||||
|
} else {
|
||||||
|
root.Right = BTreeInsertData(root.Right, data)
|
||||||
|
root.Right.Parent = root
|
||||||
|
}
|
||||||
|
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
|
||||||
|
func BTreeSearchItem(root *piscine.TreeNode, elem string) *piscine.TreeNode {
|
||||||
|
if root == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
if elem > root.Data {
|
||||||
|
return BTreeSearchItem(root.Right, elem)
|
||||||
|
} else if elem < root.Data {
|
||||||
|
return BTreeSearchItem(root.Left, elem)
|
||||||
|
} else if elem == root.Data {
|
||||||
|
return root
|
||||||
|
} else {
|
||||||
|
return root
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func BTreeApplyInorder(root *piscine.TreeNode, f func(...interface{}) (int, error)) {
|
||||||
|
if root == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
BTreeApplyInorder(root.Left, f)
|
||||||
|
f(root.Data)
|
||||||
|
BTreeApplyInorder(root.Right, f)
|
||||||
|
}
|
||||||
|
|
|
@ -5,14 +5,9 @@ import (
|
||||||
"piscine"
|
"piscine"
|
||||||
)
|
)
|
||||||
|
|
||||||
type NodeL struct {
|
type NodeI struct {
|
||||||
Data interface{}
|
Data int
|
||||||
Next *NodeL
|
Next *NodeI
|
||||||
}
|
|
||||||
|
|
||||||
type List struct {
|
|
||||||
Head *NodeL
|
|
||||||
Tail *NodeL
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func PrintList(l *piscine.NodeI) {
|
func PrintList(l *piscine.NodeI) {
|
||||||
|
|
Loading…
Reference in New Issue