Trees Chapter 19, 20 Instructor: Scott Kristjanson CMPT 125/125 - - PowerPoint PPT Presentation

trees
SMART_READER_LITE
LIVE PREVIEW

Trees Chapter 19, 20 Instructor: Scott Kristjanson CMPT 125/125 - - PowerPoint PPT Presentation

Trees Chapter 19, 20 Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013 Scope 2 Trees : Trees as data structures Tree terminology Tree implementations Analyzing tree efficiency Tree traversals Expression


slide-1
SLIDE 1

Trees

Chapter 19, 20

Instructor: Scott Kristjanson CMPT 125/125 SFU Burnaby, Fall 2013

slide-2
SLIDE 2

Wk12.3 Slide 2

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

2

Scott Kristjanson – CMPT 125/126 – SFU

Scope

Trees:

  • Trees as data structures
  • Tree terminology
  • Tree implementations
  • Analyzing tree efficiency
  • Tree traversals
  • Expression trees
slide-3
SLIDE 3

Wk12.3 Slide 3

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

3

Scott Kristjanson – CMPT 125/126 – SFU

Trees

A tree is a non-linear structure in which elements are organized into a hierarchy A tree is comprised of a set of nodes in which elements are stored and edges connect one node to another Each node is located on a particular level There is only one root node in the tree

Nodes Edges Root Node Node Node Node Node Root Level 0 Level 1 Level 2

slide-4
SLIDE 4

Wk12.3 Slide 4

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

4

Scott Kristjanson – CMPT 125/126 – SFU

Trees

Nodes at the lower level of a tree are the children of nodes at the previous level A node can have only one parent, but may have multiple children Nodes that have the same parent are siblings The root is the only node which has no parent

Siblings Root Node A Node B Node C Node D Node E

Node A is the Parent of Nodes D and E

Level 0 Level 1 Level 2

Children of Node A

slide-5
SLIDE 5

Wk12.3 Slide 5

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

5

Scott Kristjanson – CMPT 125/126 – SFU

Trees

A node that has no children is a leaf node A node that is not the root and has at least one child is an internal node A subtree is a tree structure that makes up part of another tree We can follow a path through a tree from parent to child, starting at the root A node is an ancestor of a node if it is above it on the path from the root.

slide-6
SLIDE 6

Wk12.3 Slide 6

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

6

Scott Kristjanson – CMPT 125/126 – SFU

Trees

Nodes that can be reached by following a path from a particular node are the descendants of that node The level of a node is the length of the path from the root to the node The path length is the number of edges to get from the root to the node The height of a tree is the length of the longest path from the root to a leaf

Root Node A Node B Node C Node D Node E Level 0 Level 1 Level 2 Height = 2

slide-7
SLIDE 7

Wk12.3 Slide 7

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

7

Scott Kristjanson – CMPT 125/126 – SFU

Trees – Quiz

What are the descendents of node B? What is the level of node E? What is the path length to get from the root to node G? What is the height of this tree?

slide-8
SLIDE 8

Wk12.3 Slide 8

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

8

Scott Kristjanson – CMPT 125/126 – SFU

Classifying Trees

Trees can be classified in many ways One important criterion is the maximum number of children any node in the tree may have This may be referred to as the order of the tree General trees have no limit to the number of children a node may have A tree that limits each node to no more than n children is referred to as an n-ary tree The tree for play TicTacToe is an 9-ary tree (at most 9 moves)

slide-9
SLIDE 9

Wk12.3 Slide 9

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

9

Scott Kristjanson – CMPT 125/126 – SFU

Binary Trees

Trees in which nodes may have at most two children are called binary trees

Root Node A Node B Node C Node D Node E Node F

slide-10
SLIDE 10

Wk12.3 Slide 10

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

10

Scott Kristjanson – CMPT 125/126 – SFU

Balanced Trees

A tree is balanced if all of the leaves of the tree are on the same level or within one level of each other

slide-11
SLIDE 11

Wk12.3 Slide 11

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

11

Scott Kristjanson – CMPT 125/126 – SFU

Full and Complete Trees

A balanced n-ary tree with m elements has a height of lognm A balanced binary tree with n nodes has a height of log2n An n-ary tree is full if all leaves of the tree are at the same height and every non-leaf node has exactly n children A tree is complete if it is full, or full to the next-to-last level with all leaves at the bottom level on the left side of the tree

Root Node A Node B

Node C Node D Node E Node F

Full Binary Tree Root Node A Node B

Node C Node D Node E

Complete Binary Tree

slide-12
SLIDE 12

Wk12.3 Slide 12

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

12

Scott Kristjanson – CMPT 125/126 – SFU

Full and Complete Trees

Three complete trees: Which trees are full? Only tree c is full

slide-13
SLIDE 13

Wk12.3 Slide 13

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

13

Scott Kristjanson – CMPT 125/126 – SFU

Implementing Trees

An obvious choice for implementing trees is a linked structure Array-based implementations are the less obvious choice, but are sometimes useful Let's first look at the strategy behind two array-based implementations

slide-14
SLIDE 14

Wk12.3 Slide 14

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

14

Scott Kristjanson – CMPT 125/126 – SFU

Computed Child Links

For full or complete trees, can use an array to represent a tree For a binary tree with any element stored in position n,

  • the element’s left child is stored in array position (2n+1)
  • the element’s right child is stored in array position (2*(n+1))

If the represented tree is not complete or relatively complete, this approach can waste large amounts of array space

slide-15
SLIDE 15

Wk12.3 Slide 15

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

15

Scott Kristjanson – CMPT 125/126 – SFU

Simulated Child Links

Each element of the array is an object that stores a reference to the tree element and the array index of each child This approach is modeled after the way operating systems manage memory Array positions are allocated on a first-come, first-served basis

slide-16
SLIDE 16

Wk12.3 Slide 16

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

16

Scott Kristjanson – CMPT 125/126 – SFU

Tree Traversals

For linear structures, the process of iterating through the elements is fairly obvious (forwards or backwards) For non-linear structures like a tree, the possibilities are more interesting Let's look at four classic ways of traversing the nodes of a tree All traversals start at the root of the tree Each node can be thought of as the root of a subtree

slide-17
SLIDE 17

Wk12.3 Slide 17

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

17

Scott Kristjanson – CMPT 125/126 – SFU

Tree Traversals

Preorder: visit the root, then traverse the subtrees from left to right Inorder: traverse the left subtree, then visit the root, then traverse the right subtree Postorder: traverse the subtrees from left to right, then visit the root Level-order: visit each node at each level of the tree from top (root) to bottom and left to right

slide-18
SLIDE 18

Wk12.3 Slide 18

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

18

Scott Kristjanson – CMPT 125/126 – SFU

Tree Traversals

Preorder: A B D E C Inorder: D B E A C Postorder: D E B C A Level-Order: A B C D E

slide-19
SLIDE 19

Wk12.3 Slide 19

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

19

Scott Kristjanson – CMPT 125/126 – SFU

Tree Traversals

Recursion simplifies the implementation of tree traversals Preorder (pseudocode):

Visit node Traverse (left child) Traverse (right child)

Inorder:

Traverse (left child) Visit node Traverse (right child)

slide-20
SLIDE 20

Wk12.3 Slide 20

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

20

Scott Kristjanson – CMPT 125/126 – SFU

Tree Traversals

Postorder:

Traverse (left child) Traverse (right child) Visit node

A level-order traversal is more complicated It requires the use of extra structures (such as queues and/or lists) to create the necessary order

slide-21
SLIDE 21

Wk12.3 Slide 21

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

21

Scott Kristjanson – CMPT 125/126 – SFU

A Binary Tree ADT

slide-22
SLIDE 22

Wk12.3 Slide 22

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

22

Scott Kristjanson – CMPT 125/126 – SFU

A Binary Tree ADT

slide-23
SLIDE 23

Wk12.3 Slide 23

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

23

Scott Kristjanson – CMPT 125/126 – SFU

public interface BinaryTreeADT<T>

{ public T getRootElement(); public boolean isEmpty(); public int size(); public boolean contains(T targetElement); public T find(T targetElement);

public String toString(); public Iterator<T> iterator(); public Iterator<T> iteratorInOrder(); public Iterator<T> iteratorPreOrder(); public Iterator<T> iteratorPostOrder(); public Iterator<T> iteratorLevelOrder(); }

A Binary Tree ADT

slide-24
SLIDE 24

Wk12.3 Slide 24

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

24

Scott Kristjanson – CMPT 125/126 – SFU

Expression Trees

An expression tree is a tree that shows the relationships among

  • perators and operands in an

expression An expression tree is evaluated from the bottom up

slide-25
SLIDE 25

Wk12.3 Slide 25

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

25

Scott Kristjanson – CMPT 125/126 – SFU

Expression Tree Evaluation

Let's look at an example that creates an expression tree from a postfix expression and then evaluates it This is a modification of an earlier solution It uses a stack of expression trees to build the complete expression tree

slide-26
SLIDE 26

Wk12.3 Slide 26

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

26

Scott Kristjanson – CMPT 125/126 – SFU

Building an Expression Tree

Input in Postfix: 5 3 – 4 * 9 +

slide-27
SLIDE 27

Wk12.3 Slide 27

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

27

Scott Kristjanson – CMPT 125/126 – SFU

Building an Expression Tree

Input in Postfix: 5 3 – 4 * 9 +

slide-28
SLIDE 28

Wk12.3 Slide 28

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

28

Scott Kristjanson – CMPT 125/126 – SFU

Decision Trees

A decision tree is a tree whose nodes represent decision points, and whose children represent the options available The leaves of a decision tree represent the possible conclusions that might be drawn A simple decision tree, with yes/no questions, can be modeled by a binary tree Decision trees are useful in diagnostic situations (medical, car repair, etc.)

slide-29
SLIDE 29

Wk12.3 Slide 29

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

29

Scott Kristjanson – CMPT 125/126 – SFU

Decision Trees

A simplified decision tree for diagnosing back pain:

slide-30
SLIDE 30

Wk12.3 Slide 30

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

30

Scott Kristjanson – CMPT 125/126 – SFU

public DecisionTree(String filename) throws FileNotFoundException { File inputFile = new File(filename); Scanner scan = new Scanner(inputFile); int numberNodes = scan.nextInt(); scan.nextLine(); int root = 0, left, right; List<LinkedBinaryTree<String>> nodes = new java.util.ArrayList<LinkedBinaryTree<String>>(); for (int i = 0; i < numberNodes; i++) nodes.add(i,new LinkedBinaryTree<String>(scan.nextLine())); while (scan.hasNext()) { root = scan.nextInt(); left = scan.nextInt(); right = scan.nextInt(); scan.nextLine(); nodes.set(root, new LinkedBinaryTree<String>((nodes.get(root)).getRootElement(), nodes.get(left), nodes.get(right))); } tree = nodes.get(root); }

Trees can be written to or read from a File

slide-31
SLIDE 31

Wk12.3 Slide 31

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

31

Scott Kristjanson – CMPT 125/126 – SFU

Implementing Binary Trees with Links

Now let's explore an implementation of a binary tree using links The LinkedBinaryTree class holds a reference to the root The BinaryTreeNode class represents each node, with links to a possible left and/or right child

slide-32
SLIDE 32

Wk12.3 Slide 32

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

32

Scott Kristjanson – CMPT 125/126 – SFU

The BinaryTreeNode class represents each node, with links to a possible left and/or right child

public class BinaryTreeNode<T> { protected T element; protected BinaryTreeNode<T> left, right; /** * Creates a new tree leaf node with the specified data. * @param obj the element that will become a part of the new tree node */ public BinaryTreeNode(T obj) { element = obj; left = null; right = null; }

Implementing Binary Trees with Links

slide-33
SLIDE 33

Wk12.3 Slide 33

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

33

Scott Kristjanson – CMPT 125/126 – SFU

The BinaryTreeNode constructor builds an internal or root node left and/or right child are supplied as parameters.

// Creates a new tree node with the specified left and right children public BinaryTreeNode(T obj, LinkedBinaryTree<T> left, LinkedBinaryTree<T> right) { element = obj; if (left == null) this.left = null; else this.left = left.getRootNode(); if (right == null) this.right = null; else this.right = right.getRootNode(); }

Binary Trees with Links – Building Trees

slide-34
SLIDE 34

Wk12.3 Slide 34

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

34

Scott Kristjanson – CMPT 125/126 – SFU

public BinaryTreeNode<T> getRight() { return right; } public void setRight(BinaryTreeNode<T> node) { right = node; } public BinaryTreeNode<T> getLeft() { return left; } public void setLeft(BinaryTreeNode<T> node) { left = node; }

Binary Trees– Child Getters and Setters

slide-35
SLIDE 35

Wk12.3 Slide 35

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

35

Scott Kristjanson – CMPT 125/126 – SFU

// Attempts to recursively traverse the maze. public boolean traverse(int row, int column) { boolean done = false; if (maze.validPosition(row, column)) { maze.tryPosition(row, column); // mark this cell as tried if (row == maze.getRows()-1 && column == maze.getColumns()-1) done = true; // the maze is solved else { done = traverse(row+1, column); // down if (!done) done = traverse(row, column+1); // right if (!done) done = traverse(row-1, column); // up if (!done) done = traverse(row, column-1); // left } if (done) // this location is part of the final path maze.markPath(row, column); } return done; } }

Recall: Traversing a Maze Using Recursion

slide-36
SLIDE 36

Wk12.3 Slide 36

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

36

Scott Kristjanson – CMPT 125/126 – SFU

// Rrecursively traverse the maze. public boolean traverse(int row, int column) { // Base Case – Test if reached goal else { traverse(row+1, column ); // down traverse(row , column+1); // right traverse(row-1, column ); // up traverse(row , column-1); // left } }

Execution Tree for understanding Program Flow

traverse(0,0) Execution Tree

t (1,0) t (0,1) t(-1,0) t(0,-1) right down up left t (2,0) t (1,1) t(0,0) t(1,-1) right down up left

slide-37
SLIDE 37

Wk12.3 Slide 37

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

37

Scott Kristjanson – CMPT 125/126 – SFU

Using Trees to Represent Knowledge - TicTacToe As was seen with LearningPlayer in TicTacToe, Trees can be used to represent and capture knowledge.

empty board TicTacToe Game Knowledge Tree

X takes Square 1

X takes Square 2 X takes Square 9 X O X X X O takes Square 1

slide-38
SLIDE 38

Wk12.3 Slide 38

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

38

Scott Kristjanson – CMPT 125/126 – SFU

Key Things to take away:

Trees:

  • A tree is a nonlinear structure whose elements form a hierarchy
  • Can be stored in an array using simulated link strategy
  • Trees can be balanced or non-balanced
  • A balanced N-ary tree with m elements has height lognm
  • Four basic tree traversal methods: preorder, inorder, postorder, level order
  • Preorder:

visit the node first, then its children left to right

  • Inorder:

visit the left child, then the node, then its right child

  • Postorder:

visit the children left to right, then visit the node itself

  • Level-Order: visit all nodes in a level left to right, starting with the root
  • Decision Trees can be read from files and used to create an expert system
  • Execution Trees can be used to Describe Recursive program flow
  • Trees can be used to store and update knowledge for training AI programs
slide-39
SLIDE 39

Wk12.3 Slide 39

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

39

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

Binary search tree processing Using BSTs to solve problems BST implementations Strategies for balancing BSTs

slide-40
SLIDE 40

Wk12.3 Slide 40

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

40

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

A search tree is a tree whose elements are organized to facilitate finding a particular element when needed A binary search tree is a binary tree that, for each node n

  • the left subtree of n contains elements less than the element stored in n
  • the right subtree of n contains elements greater than or equal to the element

stored in n

This is how finds your websites!

slide-41
SLIDE 41

Wk12.3 Slide 41

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

41

Scott Kristjanson – CMPT 125/126 – SFU

How Google finds Websites

Web Crawlers search the Internet for new websites Read every webpage and every word HUGE files of data – Petabytes! Data Centers process this data And Update Google Search Trees Every webpage, every day

slide-42
SLIDE 42

Wk12.3 Slide 42

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

42

Scott Kristjanson – CMPT 125/126 – SFU

Google and Amazon Data Centers

slide-43
SLIDE 43

Wk12.3 Slide 43

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

43

Scott Kristjanson – CMPT 125/126 – SFU

Data Centers – A Closer Look

All this just to update some search trees

Some VERY BIG search trees!

For more info:

  • Dr. Mohamed Hefeeda

Big-Data and Multimedia

slide-44
SLIDE 44

Wk12.3 Slide 44

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

44

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

To determine if a particular value exists in a tree

  • start at the root
  • compare target to element at current node
  • move left from current node if target is less than element in the current node
  • move right from current node if target is greater than element in the current node

We eventually find the target or hit the end of a path (target is not found) How to find node with key value 38?

  • Start at Root and compare 38 to 45
  • 38 < 45 so go to left subtree
  • 38 > 12 so go to the right
  • 38 > 15 so go to the right again
  • 38 < 42 so go left
  • 38 > 33 so go right
  • 38 found!
  • Return Object stored at this node

45 12 15 42 33 38

slide-45
SLIDE 45

Wk12.3 Slide 45

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

45

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

The particular shape of a binary search tree depends on the order in which the elements are added The shape may also be dependant on any additional processing performed on the tree to reshape it Binary search trees can hold any type of data, so long as we have a way to determine relative ordering Objects implementing the Comparable interface provide such capability

slide-46
SLIDE 46

Wk12.3 Slide 46

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

46

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

Process of adding an element is similar to finding an element New elements are added as leaf nodes Start at the root, follow path dictated by existing elements until you find no child in the desired direction Then add the new element

slide-47
SLIDE 47

Wk12.3 Slide 47

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

47

Scott Kristjanson – CMPT 125/126 – SFU

Binary Search Trees

BST operations:

slide-48
SLIDE 48

Wk12.3 Slide 48

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

48

Scott Kristjanson – CMPT 125/126 – SFU

BST Element Removal

Removing a target in a BST is not as simple as that for linear data structures After removing the element, the resulting tree must still be valid Three distinct situations must be considered when removing an element

1. Node to remove is a leaf 2. Node to remove has one child 3. Node to remove has two children

slide-49
SLIDE 49

Wk12.3 Slide 49

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

49

Scott Kristjanson – CMPT 125/126 – SFU

BST Element Removal

Dealing with the situations

  • Node is a leaf: it can simply be deleted
  • Node has one child: the deleted node is replaced by the child
  • Node has two children: an appropriate node is found lower in the tree and used to

replace the node

  • Good choice: inorder successor (node that follows in an inorder traversal)
  • The inorder successor is guaranteed not to have a left child
  • Thus, removing the inorder successor to replace the deleted node will result in one of

the first two situations (it’s a leaf or has one child)

slide-50
SLIDE 50

Wk12.3 Slide 50

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

50

Scott Kristjanson – CMPT 125/126 – SFU

Balancing BSTs

As operations are performed on a BST, it could become highly unbalanced (a degenerate tree)

slide-51
SLIDE 51

Wk12.3 Slide 51

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

51

Scott Kristjanson – CMPT 125/126 – SFU

Balancing BSTs

Text implementation does not ensure the BST stays balanced Other approaches do, such as AVL trees and red/black trees We will explore rotations – operations on binary search trees to assist in the process of keeping a tree balanced Rotations do not solve all problems created by unbalanced trees, but show the basic algorithmic processes that are used to manipulate trees

slide-52
SLIDE 52

Wk12.3 Slide 52

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

52

Scott Kristjanson – CMPT 125/126 – SFU

Balancing BSTs

A right rotation can be performed at any level of a tree, around the root of any subtree Corrects an imbalance caused by a long path in the left subtree of the left child of the root To correct the imbalance

  • A: Make the left child element of the root the new root element
  • B: Make the former root element the right child element of the new root
  • C: Make the right child of what was the left child of the former root, the new left

child of the former root

slide-53
SLIDE 53

Wk12.3 Slide 53

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

53

Scott Kristjanson – CMPT 125/126 – SFU

Balancing BSTs

A left rotation can be performed at any level of a tree, around the root of any subtree Corrects an imbalance caused by a long path in the right subtree of the left child of the root To correct the imbalance

  • A: Make the right child element of the root the new root element
  • B: Make the former root element the left child element of the new root
  • C: Make the left child of what was the right child of the former root, the new right

child of the former root

slide-54
SLIDE 54

Wk12.3 Slide 54

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

54

Scott Kristjanson – CMPT 125/126 – SFU

Key Things to take away:

Trees – Part 2:

  • CMPT 125/126 focused on introducing trees and tree algorithms
  • Will go into more depth in CMPT225 and beyond
  • A binary search tree is a binary tree with the added properties that:
  • the left child’s key is less than the parent’s key value
  • the right child’s key is more than the parent’s
  • this is a recursive definition which results in maintaining sorted order and

allows for O(logmN) searches

  • Trees are used to provide efficient implementations for other collections
  • Trees are critical to making the Internet Searching work
slide-55
SLIDE 55

Wk12.3 Slide 55

Slides based on Java Foundations 3rd Edition, Lewis/DePasquale/Chase

55

Scott Kristjanson – CMPT 125/126 – SFU

References:

1.

  • J. Lewis, P. DePasquale, and J. Chase., Java Foundations: Introduction to

Program Design & Data Structures. Addison-Wesley, Boston, Massachusetts, 3rd edition, 2014, ISBN 978-0-13-337046-1