1 General Trees & Binary Trees CSC212. 2 Trees Previous data structures (e.g. lists, stacks, queues) have a linear structure. Linear structures represent.

Slides:



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

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.
Data Structures – CSC212 (1) Dr Muhammad Hussain Lecture - Binary Tree ADT Binary Tree ADT It is an ordered tree with the following properties 1.Each node.
Computer Science 2 Data Structures and Algorithms V section 2 Introduction to Trees Professor: Evan Korth New York University.
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.
Trees, Binary Trees, and Binary Search Trees COMP171.
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,
90-723: Data Structures and Algorithms for Information Processing Copyright © 1999, Carnegie Mellon. All Rights Reserved. Lecture 5: Trees Data Structures.
Data Structures Data Structures Topic #8. Today’s Agenda Continue Discussing Table Abstractions But, this time, let’s talk about them in terms of new.
Lec 15 April 9 Topics: l binary Trees l expression trees Binary Search Trees (Chapter 5 of text)
1 Binary Search Trees (BSTs). 2 Consider the search operation FindKey (): find an element of a particular key value in a binary tree. This operation takes.
Binary and Other Trees CSE, POSTECH. 2 2 Linear Lists and Trees Linear lists are useful for serially ordered data – (e 1,e 2,e 3,…,e n ) – Days of week.
More Trees COL 106 Amit Kumar and Shweta Agrawal Most slides courtesy : Douglas Wilhelm Harder, MMath, UWaterloo
Lecture Objectives  To learn how to use a tree to represent a hierarchical organization of information  To learn how to use recursion to process trees.
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.
CMSC 341 Introduction to Trees. 8/3/2007 UMBC CMSC 341 TreeIntro 2 Tree ADT Tree definition  A tree is a set of nodes which may be empty  If not empty,
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.
Trees, Binary Trees, and Binary Search Trees COMP171.
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.
IKI 10100I: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100I: Data.
Min Chen School of Computer Science and Engineering Seoul National University Data Structure: Chapter 6.
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.
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.
Binary Search Trees (BST)
24 January Trees CSE 2011 Winter Trees Linear access time of linked lists is prohibitive  Does there exist any simple data structure for.
Binary Trees. 2 Parts of a binary tree A binary tree is composed of zero or more nodes In Java, a reference to a binary tree may be null Each node contains:
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.
CMSC 202, Version 5/02 1 Trees. CMSC 202, Version 5/02 2 Tree Basics 1.A tree is a set of nodes. 2.A tree may be empty (i.e., contain no nodes). 3.If.
TREES General trees Binary trees Binary search trees AVL trees Balanced and Threaded trees.
1 CMSC 341 Introduction to Trees Textbook sections:
IKI 10100: Data Structures & Algorithms Ruli Manurung (acknowledgments to Denny & Ade Azurat) 1 Fasilkom UI Ruli Manurung (Fasilkom UI)IKI10100: Lecture13.
(c) University of Washington20-1 CSC 143 Java Trees.
Tree Representation and Terminology Binary Trees Binary Search Trees Pointer-Based Representation of a Binary Tree Array-Based Representation of a Binary.
DS.T.1 Trees Chapter 4 Overview Tree Concepts Traversals Binary Trees Binary Search Trees AVL Trees Splay Trees B-Trees.
Binary Trees.
CC 215 Data Structures Trees
Binary Trees.
CMSC 341 Introduction to Trees 8/3/2007 CMSC 341 Tree Intro.
Tree.
CMSC 341 Introduction to Trees.
Section 8.1 Trees.
CSE 373 Data Structures Lecture 7
Binary Trees, Binary Search Trees
Binary Trees.
General Trees & Binary Trees
Find in a linked list? first last 7  4  3  8 NULL
Trees CSE 373 Data Structures.
Data Structures and Algorithms for Information Processing
Binary Trees.
Binary Search Trees (BSTs)
General Trees & Binary Trees
Binary Search Trees (BSTs)
Binary Trees, Binary Search Trees
Binary Trees.
CMSC 341 Introduction to Trees CMSC 341 Tree Intro.
CSC 143 Java Trees.
Binary Tree Traversal Methods
Trees CSE 373 Data Structures.
Trees CSE 373 Data Structures.
Binary Trees, Binary Search Trees
Data Structures Using C++ 2E
Binary Search Trees (BSTs)
Tree (new ADT) Terminology: A tree is a collection of elements (nodes)
Presentation transcript:

1 General Trees & Binary Trees CSC212

2 Trees Previous data structures (e.g. lists, stacks, queues) have a linear structure. Linear structures represent one-to-one relation between data elements. Trees have a nested or a hierarchical structure. Hierarchical structures represent one-to- many relation between data elements.

3 Trees Examples of situations were one-to-many relations exist… these can be represented as trees. –Relation between a parent and his children. –Relation between a person and books he owns. –Relation between a basketball team and the players on the team. –Card catalog in a library.

4 Trees: Some Terminology A tree is represented as a set of nodes connected by edges. Nodes Edges A Tree Root Leafs

5 Trees: Comparison with Lists A List Unique first element. Unique last element. Each element, other than the first and the last, has a unique predecessor and a unique successor. A Tree Unique first node called root. Each node has successors, called its children. Each node has one predecessor, called parent. Leafs have no children. Root has no parent.

6 Trees: More Terminology Simple path: a sequence of distinct nodes in the tree. Path length: number of nodes in a path. Siblings: two nodes that have the same parent. Ancestors: given a node A in a tree, the parent of the node A and the ancestors of the parent of A, are ancestors of A.

7 Trees: More Terminology Parent: a parent of a node is its predecessor. Child: a child of a node is its successor. Root: a unique node without any predecessor. Leafs: nodes without any children. Descendents: given a node A in a tree, the children of A and all descendents of the children of A are descendents of A.

8 Trees: More Terminology A GFE BC I D H J Sub-Tree Rooted at G A-B-F is a Path Level 1 Level 2 Level 3 Level 4 Height?

9 Binary Trees A binary tree is a tree with the following: 1.Each node can have at most two subtrees and therefore at most two children. 2.Each subtree is identified as being either the left subtree or the right subtree of the parent. 3.It may be empty. Nodes in a binary tree may be composite e.g. of variable type ‘Type’.

10 Binary Trees + + 7* a c b [(a + b) * c] * cba + 7 (a + b) * (c + 7)

11 ADT Binary Tree Elements: The elements are nodes, each node contains the following data type: Type and has LeftChild and RightChild references. Structure: hierarchical structure; each node can have two children: left or right child; there is a root node and a current node. Domain: the number of nodes in a binary tree is bounded; domain contains empty tree, trees with one element, two elements, …

12 ADT Binary Tree Operations: 1.Method Traverse (Order ord) requires: Binary Tree (BT) is not empty. input: ord. results: Each element in the tree is processed exactly once by a user supplied procedure. The order in which nodes are processed depends on the value of ord (Order = {preorder, postorder, inorder}) preorder: each node processed before any node in either of its subtrees. inorder: each node is processed after all its nodes in its left subtree and before any node in its right subtree. postorder: each node is processed after all its nodes in both of its subtrees. output: none.

13 Tree Traversals To traverse a tree means to process (e.g. printing it) each element in the tree. Tree traversals: n! ways of traversing a tree of n nodes. pre-order, in-order, post-order  three natural traversals orders. List traversals: n! ways of traversing a list of n nodes. front-to-back or back-to-front.  two natural traversals orders.

14 ADT Binary Tree Operations: 2.Method Insert (Type e, Relative rel, boolean inserted) (Relative = {leftchild, rightchild, root, parent}) requires: (1) Full () is false and (2) either (a) rel = root and Empty() is true or (b) rel <> root and rel <> parent and Empty( ) is false. input: e, rel. results: if case (1) rel = leftChild, current node has a left child, or (2) rel = rightChild, current node has a right child, then inserted is false. Else a node containing e is added as rel of the current node in the tree and becomes the current node and inserted is true. output: inserted.

15 ADT Binary Tree 3.Procedure DeleteSub () requires: Binary tree is not empty. input: none results: The subtree whose root node was the current node is deleted from the tree. If the resulting tree is not empty, then the root node is the current node. output: none. 4.Procedure Update (Type e). requires: Binary tree is not empty. input: e. results: the element in e is copied into the current node. output: none.

16 ADT Binary Tree 5.Procedure Retrieve (Type e) requires: Binary tree is not empty. input: none results: element in the current node is copied into e. output: e.

17 ADT Binary Tree 6.Procedure Find (Relative rel, boolean found) requires: Binary tree is not empty. input: rel. results: The current node of the tree is determined by the value of rel and previous current node.. output: found. 7.Procedure Empty (boolean empty). requires: None. input: none results: If Binary tree is empty then empty is true; otherwise empty is false. output: empty.

18 ADT Binary Tree 8.Procedure Full (boolean full) requires: None. input: None. results: if the binary tree is full then full is true otherwise false. output: full.

19 ADT Binary Tree: BTNode Class public class BTNode { public T data; public BTNode left, right; /** Creates a new instance of BTNode */ public BTNode(T val) { data = val; left = right = null; } public BTNode(T val, BTNode l, BTNode r){ data = val; left = l; right = r; } }

20 ADT Binary Tree: Order & Relative Classes //These definitions are in separate files and define // the Order and Relative classes. public enum Order {preOrder, inOrder, postOrder}; public enum Relative {Root, Parent, LeftChild, RightChild};

21 ADT Binary Tree public class BT { BTNode root, current; /** Creates a new instance of BT */ public BT() { root = current = null; } public boolean empty(){ return root == null ? true: false; }

22 ADT Binary Tree // Non-recursive version of findparent – uses pre-order traversal private BTNode findparent (BTNode p) { // Stack is used to store the right pointers of nodes LinkStack > stack = new LinkStack >(); BTNode q = root; while (q.right != p && q.left != p){ if (q.right != null) stack.push(q.right); if (q.left != null) q = q.left; else q = stack.pop(); // Go right here } return q; }

23 ADT Binary Tree /* Recursive version of findparent – preorder traversal used */ private BTNode findparent (BTNode p, BTNode t) { if (t == null) return null; /* empty tree */ if (t.right == null && t.left == null) return null; else if (t.right == p || t.left == p) return t; /* parent is t */ else { BTNode q = findparent(p, t.left); if (q != null) return q; else return findparent(p, t.right); }

24 ADT Binary Tree public boolean find (Relative rel){ switch (rel) { case Root: //easy case current = root; return true; case Parent: if (current == root) return false; current = findparent(current, root); return true; case LeftChild: if (current.left == null) return false; current = current.left; return true;

25 ADT Binary Tree case RightChild: if (current.right == null) return false; current = current.right; return true; default: return false; }

26 ADT Binary Tree public boolean insert (Relative rel, T val) { switch (rel) { case Root: if (! empty()) return false; current = root = new BTNode (val); return true; case Parent: //This an impossible case. return false; case LeftChild: if (current.left != null) return false; current.left = new BTNode (val); current = current.left; return true;

27 ADT Binary Tree case RightChild: if (current.right != null) return false; current.right = new BTNode (val); current = current.right; return true; default: return false; }

28 ADT Binary Tree public T retrieve (){ return current.data; } public void update (T val){ current.data = val; }

29 ADT Binary Tree public void delete_subtree(){ if (current == root){ current = root = null; } else { BTNode p = current; find(Relative.Parent); if (current.left == p) current.left = null; else current.right = null; current = root; } } }