From a88bf264c7cb817a5b5c12a12fc78c358f101d82 Mon Sep 17 00:00:00 2001 From: HossamSaberr Date: Sun, 8 Mar 2026 13:08:56 +0200 Subject: [PATCH] fix: BST structural integrity during copy --- .../CTBinarySearchTreeTest.class.st | 21 +++++++++++++++++++ .../CTBinarySearchTree.class.st | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/Containers-BinarySearchTree-Tests/CTBinarySearchTreeTest.class.st b/src/Containers-BinarySearchTree-Tests/CTBinarySearchTreeTest.class.st index 5cea465..0de5823 100644 --- a/src/Containers-BinarySearchTree-Tests/CTBinarySearchTreeTest.class.st +++ b/src/Containers-BinarySearchTree-Tests/CTBinarySearchTreeTest.class.st @@ -116,6 +116,27 @@ CTBinarySearchTreeTest >> testCopy [ self assert: (copiedTree includes: 99) ] +{ #category : 'tests' } +CTBinarySearchTreeTest >> testCopyPreservesStructure [ + + | copiedTree | + + tree add: 50. + tree add: 30. + tree add: 70. + + self assert: tree height equals: 2. + self assert: tree root contents equals: 50. + + copiedTree := tree copy. + + self assert: copiedTree height equals: tree height. + self assert: copiedTree root contents equals: tree root contents. + + self assert: copiedTree root left contents equals: 30. + self assert: copiedTree root right contents equals: 70. +] + { #category : 'tests' } CTBinarySearchTreeTest >> testDoMethod [ diff --git a/src/Containers-BinarySearchTree/CTBinarySearchTree.class.st b/src/Containers-BinarySearchTree/CTBinarySearchTree.class.st index c723099..ce8c751 100644 --- a/src/Containers-BinarySearchTree/CTBinarySearchTree.class.st +++ b/src/Containers-BinarySearchTree/CTBinarySearchTree.class.st @@ -84,7 +84,7 @@ CTBinarySearchTree >> copy [ | newTree | newTree := self class new. - self inOrderDo: [ :each | newTree add: each ]. + self preOrderDo: [ :each | newTree add: each ]. ^ newTree ]