From 3184f19ef84adfd228f7fd8d2651028bb691ede8 Mon Sep 17 00:00:00 2001 From: miguel Date: Mon, 29 Jan 2024 16:39:36 +0000 Subject: [PATCH] fix(checkpoint) add imports and functions needed --- subjects/btreedeletenode/main.go | 51 +++++++++++++++++++++++++++----- subjects/sortedlistmerge/main.go | 11 ++----- 2 files changed, 47 insertions(+), 15 deletions(-) diff --git a/subjects/btreedeletenode/main.go b/subjects/btreedeletenode/main.go index d757b785..a07d8092 100644 --- a/subjects/btreedeletenode/main.go +++ b/subjects/btreedeletenode/main.go @@ -2,22 +2,59 @@ package main import ( "fmt" + "piscine" ) -type TreeNode struct { - Left, Right, Parent *TreeNode - Data string -} - func main() { - root := &TreeNode{Data: "4"} + root := &piscine.TreeNode{Data: "4"} BTreeInsertData(root, "1") BTreeInsertData(root, "7") BTreeInsertData(root, "5") node := BTreeSearchItem(root, "4") fmt.Println("Before delete:") BTreeApplyInorder(root, fmt.Println) - root = BTreeDeleteNode(root, node) + root = piscine.BTreeDeleteNode(root, node) fmt.Println("After delete:") 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) +} diff --git a/subjects/sortedlistmerge/main.go b/subjects/sortedlistmerge/main.go index 7b7215c8..d0572613 100644 --- a/subjects/sortedlistmerge/main.go +++ b/subjects/sortedlistmerge/main.go @@ -5,14 +5,9 @@ import ( "piscine" ) -type NodeL struct { - Data interface{} - Next *NodeL -} - -type List struct { - Head *NodeL - Tail *NodeL +type NodeI struct { + Data int + Next *NodeI } func PrintList(l *piscine.NodeI) {