Presentation is loading. Please wait.

Presentation is loading. Please wait.

1 Binary Trees Informal defn: each node has 0, 1, or 2 children Informal defn: each node has 0, 1, or 2 children Formal defn: a binary tree is a structure.

Similar presentations


Presentation on theme: "1 Binary Trees Informal defn: each node has 0, 1, or 2 children Informal defn: each node has 0, 1, or 2 children Formal defn: a binary tree is a structure."— Presentation transcript:

1 1 Binary Trees Informal defn: each node has 0, 1, or 2 children Informal defn: each node has 0, 1, or 2 children Formal defn: a binary tree is a structure that Formal defn: a binary tree is a structure that  contains no nodes, or  is comprised of three disjoint sets of nodes:  a root  a binary tree called its left subtree  a binary tree called its right subtree A binary tree that contains no nodes is called empty A binary tree that contains no nodes is called empty Note: the position of a child matters! Note: the position of a child matters!

2 2 Binary Trees Full binary tree : Full binary tree :  All internal nodes have two children. Complete binary tree : Complete binary tree :  All leaves have the same depth  All internal nodes have two children  A complete binary tree of height h has 2 h -1 internal nodes and 2 h leaves  Also: a binary tree with n nodes has height at least  lgn 

3 3 Tree applications Expression evaluations (note how different traversals result in different notation) Expression evaluations (note how different traversals result in different notation) Parsing (as part of the compilation process) Parsing (as part of the compilation process) Storing and retrieving information by a key Storing and retrieving information by a key Representing structured objects (e.g. the universe in an adventure game) Representing structured objects (e.g. the universe in an adventure game) Useful when needing to make a decision on how to proceed (tic-tac-toe, chess) Useful when needing to make a decision on how to proceed (tic-tac-toe, chess)

4 4 Binary tree traversal Traversing a tree = visiting its nodes Traversing a tree = visiting its nodes There are three ways to traverse a binary tree There are three ways to traverse a binary tree  preorder : visit root, visit left subtree, visit right subtree  inorder : visit left subtree, visit root, visit right subtree  postorder : visit left subtree, visit right subtree, visit root

5 5 Example: Inorder traversal template Tree ::Inorder(TreeNode *subroot ) { if (subroot!=NULL) { Inorder(subroot  left); cout << subroot  element; Inorder(subroot  right); }

6 6 Binary trees Use for storing and retrieving information Use for storing and retrieving information We want to insert, delete and search at least as fast and, if possible, faster than with a linked list We want to insert, delete and search at least as fast and, if possible, faster than with a linked list We want to take advantage of the lgn height We want to take advantage of the lgn height Idea: Store information in an ordered way (use a key) Idea: Store information in an ordered way (use a key) Result: a Binary Search Tree (BST) Result: a Binary Search Tree (BST)

7 7 Binary Search Tree (BST) A BST is a binary tree with the following property: A BST is a binary tree with the following property:  The key of the root is larger than any key in the left subtree and smaller than any key in the right subtree (the subtrees are also BSTs) Note: This definition does not allow duplicate keys. Note: This definition does not allow duplicate keys. It’s now easy to search for an element It’s now easy to search for an element

8 8 Binary Search Tree (BST) How do we insert an element into a BST? How do we insert an element into a BST? We have to make sure it is inserted at the correct position. We have to make sure it is inserted at the correct position. It is a combination of Search and Insert. It is a combination of Search and Insert.

9 9 Binary Search Tree (BST) How do we remove an element from a BST? How do we remove an element from a BST? Removing a leaf is easy Removing a leaf is easy Removing an internal node can be tricky. Removing an internal node can be tricky. The tree will need to be rearranged (how?) The tree will need to be rearranged (how?)

10 10 Balanced trees The good news: Why not sort a sequence by inserting the elements into a BST? The good news: Why not sort a sequence by inserting the elements into a BST?  on average O(nlgn) comparisons  we get to keep the tree The bad news: The insertion procedure can result in a tree of height n after inserting n elements. The bad news: The insertion procedure can result in a tree of height n after inserting n elements. We would prefer to get trees that are guaranteed to have logarithmic height in the worst case. We would prefer to get trees that are guaranteed to have logarithmic height in the worst case. Such trees are called balanced. Such trees are called balanced.

11 11 AVL trees AVL tree = a binary search tree with the following property: for every node the heights of the left and right subtrees differ at most by one. AVL tree = a binary search tree with the following property: for every node the heights of the left and right subtrees differ at most by one. That’s all very nice but how do we guarantee it? That’s all very nice but how do we guarantee it? We have to somehow modify the insert and delete functions. We have to somehow modify the insert and delete functions. If, after an insertion or deletion, the property is not satisfied, we “rotate” the tree to make it balanced. If, after an insertion or deletion, the property is not satisfied, we “rotate” the tree to make it balanced.

12 12 AVL trees When can an insertion of a child y at node x cause an imbalance? When can an insertion of a child y at node x cause an imbalance?  when both x and y are left children  when both x and y are right children  when x is a right child and y is a left child  when y is a right child and x is a left child

13 13 AVL trees There are two types of rotations: There are two types of rotations:  single rotation  fixes imbalance of type 1/2  double rotation  fixes imbalance of type 3/4 Let’s draw some trees... Let’s draw some trees...

14 14 AVL trees How/when do we decide whether to rotate? How/when do we decide whether to rotate? Example: insertion Example: insertion  step 1: walk down the tree to insert the node in the correct position  step 2: walk up the tree checking the property at each node we need a helper function to determine the heights of the subtrees of each node. we need a helper function to determine the heights of the subtrees of each node. we need to be able to determine whether to perform a single or a double rotation we need to be able to determine whether to perform a single or a double rotation

15 15 AVL trees Just how balanced are AVL trees? Just how balanced are AVL trees? It can be shown that the worst case height of an AVL tree is at most 44% more than the minimum possible for BST (i.e. approximately 1.44 lgn) It can be shown that the worst case height of an AVL tree is at most 44% more than the minimum possible for BST (i.e. approximately 1.44 lgn) What does this mean? What does this mean?  Searching/Inserting/Removing now take O(lgn) in the worst case.


Download ppt "1 Binary Trees Informal defn: each node has 0, 1, or 2 children Informal defn: each node has 0, 1, or 2 children Formal defn: a binary tree is a structure."

Similar presentations


Ads by Google