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.

Slides:



Advertisements
Similar presentations
Binary Trees CSC 220. Your Observations (so far data structures) Array –Unordered Add, delete, search –Ordered Linked List –??
Advertisements

TREES Chapter 6. Trees - Introduction  All previous data organizations we've studied are linear—each element can have only one predecessor and successor.
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
CS 171: Introduction to Computer Science II
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 Introduction to Binary Trees. 2 Background All data structures examined so far are linear data structures. Each element in a linear data structure has.
Lec 15 April 9 Topics: l binary Trees l expression trees Binary Search Trees (Chapter 5 of text)
C o n f i d e n t i a l HOME NEXT Subject Name: Data Structure Using C Unit Title: Trees.
Binary Trees Chapter 6.
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
Chapter 11 A Trees. © 2004 Pearson Addison-Wesley. All rights reserved 11 A-2 Terminology A tree consists of vertices and edges, –An edge connects to.
COSC2007 Data Structures II
Tree.
Advanced Algorithms Analysis and Design Lecture 8 (Continue Lecture 7…..) Elementry Data Structures By Engr Huma Ayub Vine.
Introduction Of Tree. Introduction A tree is a non-linear data structure in which items are arranged in sequence. It is used to represent hierarchical.
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.
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 Tree Finite (possibly empty) collection of elements A nonempty binary tree has a root element The remaining elements (if any) are.
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.
Tree (new ADT) Terminology:  A tree is a collection of elements (nodes)  Each node may have 0 or more successors (called children)  How many does a.
Binary Trees, Binary Search Trees RIZWAN REHMAN CENTRE FOR COMPUTER STUDIES DIBRUGARH UNIVERSITY.
Tree ADTs Tree concepts. Applications of Trees. A Tree ADT – requirements, contract. Linked implementation of Trees. Binary Tree ADTs. Binary Search.
Data Structures and Algorithm Analysis Trees Lecturer: Jing Liu Homepage:
Compiled by: Dr. Mohammad Omar Alhawarat
Trees Chapter 8. 2 Tree Terminology A tree consists of a collection of elements or nodes, organized hierarchically. The node at the top of a tree is called.
Prof. Amr Goneid, AUC1 CSCE 210 Data Structures and Algorithms Prof. Amr Goneid AUC Part 4. Trees.
Starting at Binary Trees
Trees  Linear access time of linked lists is prohibitive Does there exist any simple data structure for which the running time of most operations (search,
TREES. What is a tree ? An Abstract Data Type which emulates a tree structure with a set of linked nodes The nodes within a tree are organized in a hierarchical.
Preview  Graph  Tree Binary Tree Binary Search Tree Binary Search Tree Property Binary Search Tree functions  In-order walk  Pre-order walk  Post-order.
Data Structures TREES.
Data Structures & Algorithm Analysis Muhammad Hussain Mughal Trees. Binary Trees. Reading: Chap.4 ( ) Weiss.
Review 1 Queue Operations on Queues A Dequeue Operation An Enqueue Operation Array Implementation Link list Implementation Examples.
1 Storing Hierarchical Information Lists, Stacks, and Queues represent linear sequences Data often contain hierarchical relationships that cannot be expressed.
Advance Data Structure 1 College Of Mathematic & Computer Sciences 1 Computer Sciences Department م. م علي عبد الكريم حبيب.
Tree Traversals, TreeSort 20 February Expression Tree Leaves are operands Interior nodes are operators A binary tree to represent (A - B) + C.
Lecture - 10 on Data Structures. 6:05:57 PM Prepared by, Jesmin Akhter, Lecturer, IIT,JU.
Disusun Oleh : Budi Arifitama Pertemuan ke-8. Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms.
Trees By P.Naga Srinivasu M.tech,(MBA). Basic Tree Concepts A tree consists of finite set of elements, called nodes, and a finite set of directed lines.
Discrete Mathematics Chapter 5 Trees.
M180: Data Structures & Algorithms in Java Trees & Binary Trees Arab Open University 1.
CMSC 341 Introduction to Trees. 2/21/20062 Tree ADT Tree definition –A tree is a set of nodes which may be empty –If not empty, then there is a distinguished.
Rooted Tree a b d ef i j g h c k root parent node (self) child descendent leaf (no children) e, i, k, g, h are leaves internal node (not a leaf) sibling.
Binary Search Trees … From
Chapter 10: Trees A tree is a connected simple undirected graph with no simple circuits. Properties: There is a unique simple path between any 2 of its.
24 January Trees CSE 2011 Winter Trees Linear access time of linked lists is prohibitive  Does there exist any simple data structure for.
1 Trees General Trees  Nonrecursive definition: a tree consists of a set of nodes and a set of directed edges that connect pairs of nodes.
1 Trees What is a Tree? Tree terminology Why trees? What is a general tree? Implementing trees Binary trees Binary tree implementation Application of Binary.
BINARY TREES Objectives Define trees as data structures Define the terms associated with trees Discuss tree traversal algorithms Discuss a binary.
TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.
18-1 Chapter 18 Binary Trees Data Structures and Design in Java © Rick Mercer.
DATA STRUCURES II CSC QUIZ 1. What is Data Structure ? 2. Mention the classifications of data structure giving example of each. 3. Briefly explain.
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.
What is a Tree? Formally, we define a tree T as a set of nodes storing elements such that the nodes have a parent-child relationship, that satisfies the.
CSCE 210 Data Structures and Algorithms
Lecture 1 (UNIT -4) TREE SUNIL KUMAR CIT-UPES.
Csc 2720 Instructor: Zhuojun Duan
Data Structures & Algorithm Design
Tonga Institute of Higher Education
Binary Trees, Binary Search Trees
TREES General trees Binary trees Binary search trees AVL trees
Introduction to Trees IT12112 Lecture 05.
Binary Trees, Binary Search Trees
Trees.
Binary Trees, Binary Search Trees
NATURE VIEW OF A TREE leaves branches root. NATURE VIEW OF A TREE leaves branches root.
Presentation transcript:

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 faster algorithms( compared with algorithms using linear data structures). Application areas are : A popular one is the directory structure in many common operating systems, including Unix and DOS etc. Almost all operating systems store files in trees or tree like structures. Compiler Design/Text processing Searching Algorithms Evaluating a mathematical expression. Analysis of electrical circuits.

Introduction to Tree Fundamental data storage structures used in programming. Combines advantages of an ordered array and a linked list. Searching as fast as in ordered array. Insertion and deletion as fast as in linked list.

Tree characteristics Consists of nodes connected by edges. Nodes often represent entities (complex objects) such as people, car parts etc. Edges between the nodes represent the way the nodes are related. Its easy for a program to get from one node to another if there is a line connecting them. The only way to get from node to node is to follow a path along the edges.

Tree Terminology Path: Traversal from node to node along the edges results in a sequence called path. Root: Node at the top of the tree. Parent: Any node, except root has exactly one edge running upward to another node. The node above it is called parent. Child: Any node may have one or more lines running downward to other nodes. Nodes below are children. 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.) Sibling Ancestor Descendant Path of two nodes Length of a path

Tree Terminology (cont.) Node or vertex - the labeled squares Edge -the connecting lines In the General tree to the right: ◦ B is the child of A - A is parent of B ◦ B and C are siblings ◦ A is the root of the tree ◦ B and its children (D, E, F) are a subtree of A The parent-child relationship is generalized as ancestor -descendant. ◦ B is a descendant of A - A is ancestor to B

Tree Terminology (cont.) Visiting: A node is visited when program control arrives at the node, usually for processing. Traversing: To traverse a tree means to visit all the nodes in some specified order. Levels: The level of a particular node refers to how many generations the node is from the root. Root is assumed to be level 0. Keys: Key value is used to search for the item or perform other operations on it.

Trees E.g. Jane MatJenniferBrian SusanJerryJack Jane’s children and grandchildren mystuff homework gamesteachingresearch DAS.pptOS.ppt File organization in a computer

Tree Types ◦ Binary tree — each node has at most two children ◦ General tree — each node can have an arbitrary number of children. ◦ Binary search trees ◦ AVL trees

General Trees. Trees can be defined in two ways : Recursive Non- recursive One natural way to define a tree is recursively 11

General trees-Definition A tree is a collection of nodes. The collection can be empty; otherwise a tree consists of a distinguish node r, called root, and zero or more non-empty (sub)trees T 1,T 2,T 3,….T K.. Each of whose roots are connected by a directed edge from r. 12

General trees-Definition A tree consists of set of nodes and set of edges that connected pair of nodes. 13 A B CDE FG H I K J

E.g. A table of contents and its tree representation Book C1 S1.1 S1.2 C2 S2.1 S2.1.1 S2.1.2 S2.2 S2.3 C3 14 Book C1C2 C3 S2.1S1.2S1.1S2.2 S2.3 S2.1.2S2.1.1

Degree : The number of sub tree of a node is called its degree. E.g. Degree of book  3, C1  2,C3  0 Nodes that have degree 0 is called Leaf or Terminal node. Other nodes called non-terminal nodes. E.g.Leaf nodes :C3,S1.1,S1.2 etc. Book is said to be the father (parent) of C1,C2,C3 and C1,C2,C3 are said to be sons (children ) of book. Children of the same parent are said to be siblings. E.g.C1,C2,C3 are siblings (Brothers) Length : The length of a path is one less than the number of nodes in the path. E.g. path from book to s1.1=3-1=2 – 15

If there is a path from node a to node b, then a is an ancestor of b and b is descendent of a. In above example, the ancestor of S2.1are itself,C2 and book, while it descendent are itself, S2.1.1 and S An ancestor or descendent of a node, other than the node itself is called a proper ancestor or proper descendent. Height of a tree — the maximum depth of a leaf node...[ In above example height=3] Depth of a node — the length of the path between the root and the node.[In above example node C1 has Depth 1, node S2.1.2 has Depth 3.etc.] 16

17 Binary Trees n A binary tree is a finite set of nodes that is either empty or consists of a root and two disjoint binary trees called the left subtree and the right subtree. n Any tree can be transformed into binary tree. –by left child-right sibling representation n The left subtree and the right subtree are distinguished.

J IM H L A B C D E F G K Left child-right child tree representation of a tree

19 Samples of Trees ABABABCGEIDHF Complete Binary Tree Skewed Binary Tree ECD

Trees A rooted tree is a connected, acyclic, undirected graph 20

Trees 21 A is the root node. B is the parent of D and E. A is ancestor of D and E. D and E are descendants of A. C is the sibling of B D and E are the children of B. D, E, F, G, I are leaves.

Trees A, B, C, H are internal nodes The depth (level) of E is 2 The height of the tree is 3 The degree of node B is 2 22

Binary Tree Binary tree: ordered tree with all internal nodes of degree 2 23

Representing Rooted Trees BinaryTree: ◦ Parent: BinaryTree ◦ LeftChild: BinaryTree ◦ RightChild: BinaryTree 24           Root

B-Tree

Binary Trees Every node in a binary tree can have at most two children. The two children of each node are called the left child and right child corresponding to their positions. A node can have only a left child or only a right child or it can have no children at all. Left child is always less that its parent, while right child is greater than its parent.

Property1: each node can have up to two successor nodes (children) –The predecessor node of a node is called its parent –The "beginning" node is called the root (no parent) –A node without children is called a leaf Binary Trees Property2: a unique path exists from the root to every other node

Binary Search Trees Binary Search Tree Property: In a binary search tree, the left subtree contains key values less than the root the right subtree contains key values greater than or equal to the root. Each subtree is itself a binary search tree.

Searching a binary search tree 1)(1) Start at the root 2)(2) Compare the value of the item you are searching for with the value stored at the root 3)(3) If the values are equal, then item found; otherwise, if it is a leaf node, then not found

Searching a binary search tree (cont.) 4)(4) If it is less than the value stored at the root, then search the left subtree 5)(5) If it is greater than the value stored at the root, then search the right subtree 6)(6) Repeat steps 2-6 for the root of the subtree chosen in the previous step 4 or 5 Is this better than searching a linked list? Yes !! ---> O(logN)

Tree node structure struct TreeNode { ItemType info; TreeNode* left; TreeNode* right; };

Function InsertItem Use the binary search tree property to insert the new item at the correct place

Does the order of inserting elements into a tree matter? (cont.)

Function DeleteItem First, find the item; then, delete it Important: binary search tree property must be preserved!! We need to consider three different cases: (1) Deleting a leaf (2) Deleting a node with only one child (3) Deleting a node with two children

(1) Deleting a leaf

(2) Deleting a node with only one child

(3) Deleting a node with two children

(3) Deleting a node with two children (cont.) Find predecessor (it is the rightmost node in the left subtree) Replace the data of the node to be deleted with predecessor's data Delete predecessor node

Representing Tree in C++ Similar to Linked List but with 2 Links ◦ Store the nodes at unrelated locations in memory and connect them using references in each node that point to its children. Can also be represented as an array, with nodes in specific positions stored in corresponding positions in the array.

Array implementation

Binary Tree Definition T is a binary tree if either: ◦ T has no nodes, or ◦ T is of the form: R TLTL TRTR where R is a node and T L and T R are both binary trees. if R is the root of T then : T L is the left subtree of R - if it is not null then its root is the left child of R T R is the right subtree of R - if it is not null then its root is the right child of R

Full Binary Trees In a full binary tree: ◦ All nodes have two children except leaf nodes. ◦ All leaf nodes are located in the lowest level of the tree. A B G C D EF

Complete Binary Trees In a complete binary tree: ◦ All nodes have two children except those in the bottom two levels. ◦ The bottom level is filled from left to right. A B C GE F D HIG

Binary Search Trees A binary search tree represents a hierarchy of elements that are arranged by size: ◦ For any node n:  n's value is greater than any value in its left subtree  n's value is less than any value in its right subtree F D I KE H B AC G J

Binary Expression Trees A binary expression tree represents an arithmetic expression: ◦ For any node n:  if n is a leaf node:  it must contain an operand.  if n is not a leaf node:  it must contain an operator.  it must have two subtrees. * + - d b c a This tree represents the expression: (a + b) * (c -d) or a b + c d -*

47 Maximum Number of Nodes in BT n The maximum number of nodes on level i of a binary tree is 2 i-1, i>=1. n The maximum nubmer of nodes in a binary tree of depth k is 2 k -1, k>=1. i-1

Traversing the Tree There are three possible traversals of binary trees that differ only in the order that they perform the 3 basic operations. Three simple ways to traverse a tree: ◦ Inorder ◦ Preorder ◦ Postorder

Inorder Traversing Inorder traversal will cause all the nodes to be visited in ascending order. Steps involved in Inorder traversal (recursion) are: Call itself to traverse the node’s left subtree Visit the node (e.g. display a key) Call itself to traverse the node’s right subtree.

Tree Traversal (continued) Sequence of preorder traversal: e.g. use for infix parse tree to generate prefix -- Visit the node -- Call itself to traverse the node’s left subtree -- Call itself to traverse the node’s right subtree Sequence of postorder traversal: e.g. use for infix parse tree to generate postfix -- Call itself to traverse the node’s left subtree -- Call itself to traverse the node’s right subtree -- Visit the node.

Inorder Traversal inorder(binTree tree){ // inorder traversal of tree if(tree != null){ inorder(left subtree of tree) print tree's data inorder(right subtree of tree) } * + - d b c a For this tree produces: a + b * c - d

Postorder Traversal postorder(binTree tree){ //postorder traversal of tree if(tree != null){ postorder(left subtree of tree) postorder(right subtree of tree) print tree's data } * + - d b c a For this tree produces: a b + c d - *

Preorder Traversal preorder(binTree tree){ // preorder traversal of tree if(tree != null){ print tree's data preorder(left subtree of tree) preorder(right subtree of tree) } * + - d b c a For this tree produces: * + a b - c d

Tree Traversals

Finding a Node To find a node given its key value, start from the root. If the key value is same as the node, then node is found. If key is greater than node, search the right subtree, else search the left subtree. Continue till the node is found or the entire tree is traversed. Time required to find a node depends on how many levels down it is situated, i.e. O(log N).

Inserting a Node To insert a node we must first find the place to insert it. Follow the path from the root to the appropriate node, which will be the parent of the new node. When 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.

Finding Maximum and Minimum Values For the minimum, ◦ go to the left child of the root and keep going to the left child until you come to a leaf node. This node is the minimum. For the maximum, ◦ go to the right child of the root and keep going to the right child until you come to a leaf node. This node is the maximum.