Chapter 6 Binary Trees. 6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are more flexible than arrays, but it is difficult to use.

Slides:



Advertisements
Similar presentations
COSC2007 Data Structures II Chapter 10 Trees I. 2 Topics Terminology.
Advertisements

Binary Trees CSC 220. Your Observations (so far data structures) Array –Unordered Add, delete, search –Ordered Linked List –??
Algorithms and Data Structures Lecture 4. Agenda: Trees – fundamental notions, variations Binary search tree.
Binary Trees Chapter 6. Linked Lists Suck By now you realize that the title to this slide is true… By now you realize that the title to this slide is.
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
CS 171: Introduction to Computer Science II
Data Structures: Trees i206 Fall 2010 John Chuang Some slides adapted from Marti Hearst, Brian Hayes, or Glenn Brookshear.
Fall 2007CS 2251 Trees Chapter 8. Fall 2007CS 2252 Chapter Objectives To learn how to use a tree to represent a hierarchical organization of information.
Binary Trees Terminology A graph G = is a collection of nodes and edges. An edge (v 1,v 2 ) is a pair of vertices that are directly connected. A path,
1 Trees. 2 Outline –Tree Structures –Tree Node Level and Path Length –Binary Tree Definition –Binary Tree Nodes –Binary Search Trees.
Lists A list is a finite, ordered sequence of data items. Two Implementations –Arrays –Linked Lists.
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
CHAPTER 12 Trees. 2 Tree Definition A tree is a non-linear structure, consisting of nodes and links Links: The links are represented by ordered pairs.
Marc Smith and Jim Ten Eyck
C++ Programming: Program Design Including Data Structures, Third Edition Chapter 20: Binary Trees.
Binary Trees Chapter 6.
CHAPTER 71 TREE. Binary Tree A binary tree T is a finite set of one or more nodes such that: (a) T is empty or (b) There is a specially designated node.
COSC2007 Data Structures II
Tree.
Compiled by: Dr. Mohammad Alhawarat BST, Priority Queue, Heaps - Heapsort CHAPTER 07.
Slow Insertion in an Ordered Array 1. Slow Searching in a Linked List 2.
Chapter 19: Binary Trees. Objectives In this chapter, you will: – Learn about binary trees – Explore various binary tree traversal algorithms – Organize.
CS261 Data Structures Trees Introduction and Applications.
CS Data Structures Chapter 5 Trees. Chapter 5 Trees: Outline  Introduction  Representation Of Trees  Binary Trees  Binary Tree Traversals 
Lecture 10 Trees –Definiton of trees –Uses of trees –Operations on a tree.
Chapter 19 Implementing Trees and Priority Queues Fundamentals of Java.
Spring 2010CS 2251 Trees Chapter 6. Spring 2010CS 2252 Chapter Objectives Learn to use a tree to represent a hierarchical organization of information.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Chapter 13 B Advanced Implementations of Tables – Balanced BSTs.
Starting at Binary Trees
Review 1 Queue Operations on Queues A Dequeue Operation An Enqueue Operation Array Implementation Link list Implementation Examples.
Trees : Part 1 Section 4.1 (1) Theory and Terminology (2) Preorder, Postorder and Levelorder Traversals.
Chapter 7 Trees_Part3 1 SEARCH TREE. Search Trees 2  Two standard search trees:  Binary Search Trees (non-balanced) All items in left sub-tree are less.
Tree Traversals, TreeSort 20 February Expression Tree Leaves are operands Interior nodes are operators A binary tree to represent (A - B) + C.
Introduction to Trees IT12112 Lecture 05 Introduction Tree is one of the most important non-linear data structures in computing. It allows us to implement.
Binary Search Trees Lecture 5 1. Binary search tree sort 2.
1 Chapter 7 Objectives Upon completion you will be able to: Create and implement binary search trees Understand the operation of the binary search tree.
Binary Search Trees (BSTs) 18 February Binary Search Tree (BST) An important special kind of binary tree is the BST Each node stores some information.
Binary Tree.
1 Joe Meehean. A A B B D D I I C C E E X X A A B B D D I I C C E E X X  Terminology each circle is a node pointers are edges topmost node is the root.
BINARY TREES Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms Discuss a binary.
Chapter 6 – Trees. Notice that in a tree, there is exactly one path from the root to each node.
Trees By JJ Shepherd. Introduction Last time we discussed searching and sorting in a more efficient way Divide and Conquer – Binary Search – Merge Sort.
Trees CSIT 402 Data Structures II 1. 2 Why Do We Need Trees? Lists, Stacks, and Queues are linear relationships Information often contains hierarchical.
18-1 Chapter 18 Binary Trees Data Structures and Design in Java © Rick Mercer.
1 Trees. 2 Trees Trees. Binary Trees Tree Traversal.
Tree Representation and Terminology Binary Trees Binary Search Trees Pointer-Based Representation of a Binary Tree Array-Based Representation of a Binary.
CSE 373 Data Structures Lecture 7
Data Structures and Design in Java © Rick Mercer
Trees Chapter 15.
Binary Search Tree Chapter 10.
Section 8.1 Trees.
Tonga Institute of Higher Education
Tree data structure.
i206: Lecture 13: Recursion, continued Trees
Binary Search Trees Why this is a useful data structure. Terminology
Binary Trees, Binary Search Trees
Chapter 20: Binary Trees.
Introduction to Trees IT12112 Lecture 05.
Chapter 21: Binary Trees.
Advanced Associative Structures
Tree data structure.
CMSC 202 Trees.
Binary Trees, Binary Search Trees
Trees.
Chapter 20: Binary Trees.
Binary Trees, Binary Search Trees
Chapter 11 Trees © 2011 Pearson Addison-Wesley. All rights reserved.
Cs212: Data Structures Lecture 7: Tree_Part1
Presentation transcript:

Chapter 6 Binary Trees

6.1 Trees, Binary Trees, and Binary Search Trees Linked lists usually are more flexible than arrays, but it is difficult to use them to organize a hierarchical representation of objects. Stacks and queues reflect some hierarchy but are limited to only one dimension. For these reasons, create a new data type tree that consists of nodes and arcs/edges and has the root at the top and the leaves (terminal nodes) at the bottom.

Tree Terminology Path : a unique sequence of arcs or the resulting sequence of nodes. Root : the node at the top of the tree. (one node / one path) Parent : Any node (except the root) has exactly one edge running upward to another node.. Child : Any node can have one or more lines running downward to other nodes. Leaf : a node that has no children. Subtree : any node can be considered to be the root of a subtree, which consists of its children, and its children's children, and so on.

Tree Terminology cont’ Length : the number of arcs in a path. Level of the node : the length of the path from the root to the node plus 1 = the number of nodes in the path. Height of non empty tree : the maximum level of a node in the tree. Visiting : a node is visited when program control arrives at the node, usually for the purpose of carrying out some operation on the node. Traversing : to visit all the nodes in some specified order. Key : a value that is used to search for the item or perform other operations on it.

Binary Tree It is a tree whose nodes have two children (possibly empty), and each child is designed as either a left child or a right child. If it has 2 i nodes at each level i+1, it called complete binary tree: all nonterminal nodes have both their children and all leaves are at the same level. The binary search tree : Also called ordered binary trees For each node n, all values stored in its left subtree are less than value v stored in n, and all values stored in the right subtree are greater than v.

Examples of binary trees

Why tree / binary tree ? An ordered array is quick in search using binary search, but it is slow in insertion and deleting nodes Linked list is quick in insertion and deletion but slow in searching So, you may use a tree because it combines the advantages of the other two structures: an ordered array and a linked list. 6.2 Implementing Binary Tree

Binary tree can be implemented as : 1. A linked list. 2. An Array. Declare a node as a structure with an information field and two “pointers” fields. However, it may has problems when deleting and inserting nodes

6.3 Searching a Binary Search Tree For every node, compare the key to be located with the value stored in the node currently pointed at. 1. If key is less than the value, go to the left subtree and try again. 2. If it is greater than that value, try the right subtree. 3. If it is the same, the search stops. 4. The search is aborted if there is no way to go – the key is not in the tree.

The complexity of searching is measured by the number of comparisons performed. This number depends on the number of nodes encountered on the unique path leading from the root to the node being searched for. So, the complexity is the length of the path leading to this node plus 1. Complexity depends on 1. The shape of the tree. 2. The position of the node in the tree.

Unbalanced Trees Some of the trees are unbalanced, that is, they have most of their nodes on one side of the root or the other. Individual subtrees may also be unbalanced.

1.Finding a Node Finding a node with a specific key is the simplest of the major tree operations. Remember that the nodes in a binary search tree correspond to objects containing information, one of them can be considered as a key.

Efficiency of the Find Operation How long it takes to find a node depends on how many levels down it is situated. For example, there can be up to 31 nodes, but no more than 5 levels. Thus you can find any node using a maximum of only 5 comparisons. This is O(log N) time.

2.Inserting a Node 1. Find the place to insert it. This is much the same process as trying to find a node which turns out not to exist. 2. Follow the path from the root to the appropriate node, which will be the parent of the new node. 3. After this parent is found, the new node is connected as its left or right child, depending on whether the new node's key is less or greater than that of the parent.

3.Deleting a Node Deleting a node is the most complicated common operation required for binary search trees. However, deletion is important in many tree applications. There are three cases to consider:- 1- The node to be deleted is a leaf node (has no children). 2- The node to be deleted has one child. 3- The node to be deleted has two children.

Case1 : The node to be deleted has no children To delete a leaf node, change the appropriate child field in the node's parent to point to null, instead of to the node.

Case 2 : The node to be deleted has one child The node has only two connections: to its parent and to its only child. You want to "snip" the node out of this sequence by connecting its parent directly to its child.

Case 3 : The node to be deleted has two children If the deleted node has two children, you can't just replace it with one of these children, at least if the child has its own children. To delete a node with two children, replace the node with its in order successor.

4.Finding Maximum and Minimum values For the minimum, go to the left child of the root; then go to the left child of that child, and so on, until you come to a node that has no left child. This node is the minimum:

For the maximum value in the tree, follow the same procedure, but go from right child to right child until you find a node with no right child. This node is the maximum.

Summary Trees consist of nodes (circles) connected by edges (lines). The root is the topmost node in a tree; it has no parent. In a binary tree, a node has at most two children. In a binary search tree, all the nodes that are left descendants of node A have key values less than A; all the nodes that are A’s right descendants have key values greater than (or equal to) A. Trees perform searches, insertions, and deletions in O(log N) time. Nodes represent the data-objects being stored in the tree. Edges are most commonly represented in a program by pointers to a node's children (and sometimes to its parent).

An unbalanced tree is one whose root has many more left descendents than right descendants, or vice versa. Searching for a node involves comparing the value to be found with the key value of a node, and going to that node's left child if the key search value is less, or to the node’s right child if the search value is greater. Insertion involves finding the place to insert the new node, and then changing a child data member in its new parent to refer to it. Summary (cont’)