28
BST Numbers, Memory, Removal & Tree Maps

BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

Embed Size (px)

DESCRIPTION

BST Numbers n = number values contained h = height

Citation preview

Page 1: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Numbers, Memory, Removal & Tree Maps

Page 2: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Numbers

Ideal binary tree:• Leaf nodes dominate :

max number leaves =

• Height directly related to n:n = 2(h+1) – 1

• Height = Height related to log of tree size

n = number values containedh = height

Page 3: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Numbers

Ideal binary tree:• Leaf nodes dominate :

max number leaves =

• Height directly related to n:n = 2(h+1) – 1

• Height = Height related to log of tree sizeAlgorithm that descends one path doing constant work at each node is O(logn)

n = number values containedh = height

Page 4: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Memory

• BST manages memory…– Destructor– Copy/Assignment

Page 5: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST DeleteDestructor

deleteSubtree at root

deleteSubtree(node)deleteSubtree on childrendelete node

Page 6: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST CopyBSTNode* copySubtree(BSTNode* currentNode)

If currentNode is nullptrreturn nullptr

BSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

Page 7: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST CopyBSTNode* copySubtree(BSTNode* currentNode)

If currentNode is nullptrreturn nullptr

BSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

Page 8: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 9: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 10: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 11: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 12: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 13: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 14: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 15: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 16: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BSTNode* copySubtree(BSTNode* currentNode)If currentNode is nullptr

return nullptrBSTNode* newNode = new BSTNode(currentNode->value)newNode->left = copySubtree(currentNode->left) newNode->right= copySubtree(currentNode->right)return newNode

BST Copy

Page 17: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Memory

• Duplicate

• Copy Constror Assignment Operator

Page 18: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 1: No children

Page 19: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 1: No children

• Prune from parent and delete

Page 20: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 2: One child

Page 21: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 2: One child

• Hook parent to the one child

Page 22: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 3: Two Children

Page 23: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 3: Two Children

• Identify replacement (smallest on right)

Page 24: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

BST Removal

• Case 3: Two Children

• Move value to node being replaced

Page 25: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

• Case 3: Two Children

• Remove smallest on right

BST Removal

Page 26: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

• Recursive Remove:

How It Works

Page 27: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

• SmallestValue( startNode )– Return value of leftmost

child of startNode

Helpers

Page 28: BST Numbers, Memory, Removal & Tree Maps. BST Numbers n = number values contained h = height

• RemoveSmallestNode( startNode )– Return pointer to

subtree with leftmostnode removed

Helpers