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:

Slides:



Advertisements
Similar presentations
S. Sudarshan Based partly on material from Fawzi Emad & Chau-Wen Tseng
Advertisements

Senem Kumova Metin Spring2009 BINARY TREES && TREE TRAVERSALS Chapter 10 in A Book on C.
Binary Trees, Binary Search Trees CMPS 2133 Spring 2008.
Binary Trees, Binary Search Trees COMP171 Fall 2006.
CS 171: Introduction to Computer Science II
Computer Science 2 Data Structures and Algorithms V section 2 Introduction to Trees Professor: Evan Korth New York University.
Trees, Binary Trees, and Binary Search Trees COMP171.
1 Trees. 2 Outline –Tree Structures –Tree Node Level and Path Length –Binary Tree Definition –Binary Tree Nodes –Binary Search Trees.
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
Binary Trees. Linear data structures Here are some of the data structures we have studied so far: –Arrays –Singly-linked lists and doubly-linked lists.
Trees CMSC 433 Chapter 8.1 Nelson Padua-Perez Bill Pugh.
1 General Trees & Binary Trees CSC Trees Previous data structures (e.g. lists, stacks, queues) have a linear structure. Linear structures represent.
Marc Smith and Jim Ten Eyck
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.
Bioinformatics Programming 1 EE, NCKU Tien-Hao Chang (Darby Chang)
Binary Trees. 2 Linear data structures Here are some of the data structures we have studied so far: –Arrays –Singly-linked lists and doubly-linked lists.
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.
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.
CISC220 Fall 2009 James Atlas Lecture 13: Trees. Skip Lists.
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.
Tree Data Structures.
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.
Trees, Binary Trees, and Binary Search Trees COMP171.
 Trees Data Structures Trees Data Structures  Trees Trees  Binary Search Trees Binary Search Trees  Binary Tree Implementation Binary Tree Implementation.
CS-2852 Data Structures LECTURE 11 Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com.
Trees Isaac Sheff. Nodes Building blocks of trees “Parent” node may have “Child” nodes Can be both parent and child Can’t be its own ancestor Can’t have.
Starting Out with C++ Early Objects Seventh Edition by Tony Gaddis, Judy Walters, and Godfrey Muganda Modified for use at Midwestern State University Chapter.
Topics Definition and Application of Binary Trees Binary Search Tree Operations.
Computer Science 112 Fundamentals of Programming II Introduction to Trees.
Lecture - 10 on Data Structures. 6:05:57 PM Prepared by, Jesmin Akhter, Lecturer, IIT,JU.
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.
DATA STRUCTURE BS(IT)3rd. Tree An Introduction By Yasir Mustafa Roll No. BS(IT) Bahauddin Zakariya University, Multan.
Trees Chapter 10. CS 308 2Chapter Trees Preview: Preview: The data organizations presented in previous chapters are linear, in that items are one.
© 2006 Pearson Addison-Wesley. All rights reserved11 A-1 Chapter 11 Trees.
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.
Trees By JJ Shepherd. Introduction Last time we discussed searching and sorting in a more efficient way Divide and Conquer – Binary Search – Merge Sort.
Fundamentals of Algorithms MCS - 2 Lecture # 17. Binary Search Trees.
1 CMSC 341 Introduction to Trees Textbook sections:
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.
Binary Trees.
Chapter 10 Trees © 2006 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.
Binary Trees.
Tree.
Csc 2720 Instructor: Zhuojun Duan
Section 8.1 Trees.
Binary Trees, Binary Search Trees
CS223 Advanced Data Structures and Algorithms
Binary Trees.
Find in a linked list? first last 7  4  3  8 NULL
Trees.
Binary Trees.
Binary Trees.
Binary Trees, Binary Search Trees
Trees.
Binary Trees.
Chapter 20: Binary Trees.
Binary Trees.
Binary Trees, Binary Search Trees
Data Structures Using C++ 2E
NATURE VIEW OF A TREE leaves branches root. NATURE VIEW OF A TREE leaves branches root.
Tree (new ADT) Terminology: A tree is a collection of elements (nodes)
Presentation transcript:

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: A value (some sort of data item) A reference or pointer to a left child (may be null ), and A reference or pointer to a right child (may be null ) A binary tree may be empty (contain no nodes) If not empty, a binary tree has a root node Every node in the binary tree is reachable from the root node by a unique path A node with no left child and no right child is called a leaf In some binary trees, only the leaves contain a value

3 Picture of a binary tree a bc d e ghi l f jk The root is drawn at the top

4 Left ≠ Right The following two binary trees are different: In the first binary tree, node A has a left child but no right child; in the second, node A has a right child but no left child Put another way: Left and right are not relative terms A B A B

5 More terminology Node A is the parent of node B if node B is a child of A Node A is an ancestor of node B if A is a parent of B, or if some child of A is an ancestor of B In less formal terms, A is an ancestor of B if B is a child of A, or a child of a child of A, or a child of a child of a child of A, etc. Node B is a descendant of A if A is an ancestor of B Nodes A and B are siblings if they have the same parent

6 Size and depth The size of a binary tree is the number of nodes in it This tree has size 12 The depth of a node is its distance from the root a is at depth zero e is at depth 2 The depth of a binary tree is the depth of its deepest node This tree has depth 4 a bc def ghijk l

7 Balance In most applications, a reasonably balanced binary tree is desirable a bc defg hij A balanced binary tree a b c d e f gh ij An unbalanced binary tree

Definitions of “balanced” Define the height of a node as the largest distance from that node to a leaf 1. A binary tree is balanced if every level above the lowest is “full” (contains 2 n nodes 2. A binary tree is balanced if the height of each node differs by at most 1 from the heights of its sibling 8 a bc defg hij A balanced binary tree

A.These are equivalent definitions B.Some binary trees satisfy #1 but not #2 C.Some binary trees satisfy #2 but not #1 D.Both B and C above 1. A binary tree is balanced if every level above the lowest is “full” (contains 2 n nodes 2. A binary tree is balanced if the height of each node differs by at most 1 from the heights of its siblings 9

A.This tree is balanced by both definitions B.This binary tree satisfies #1 but not #2 C.This binary tree satisfies #2 but not #1 D.This binary tree isn’t balanced 10

11 Sorted binary trees A binary tree is sorted if every node in the tree is larger than (or equal to) its left descendants, and smaller than (or equal to) its right descendants Equal nodes can go either on the left or the right (but it has to be consistent)

12 Binary search in a sorted array Look at array location (lo + hi)/ Searching for 5: (0+6)/2 = 3 hi = 2; (0 + 2)/2 = 1 lo = 2; (2+2)/2= Using a binary search tree

13 Tree traversals A binary tree is defined recursively: it consists of a root, a left subtree, and a right subtree To traverse (or walk) the binary tree is to visit each node in the binary tree exactly once Tree traversals are naturally recursive Since a binary tree has three “ parts, ” there are six possible ways to traverse the binary tree: root, left, right left, root, right left, right, root root, right, left right, root, left right, left, root

class BinaryTree class BinaryTree { V value; BinaryTree leftChild; BinaryTree rightChild; // Assorted methods… } A constructor for a binary tree should have three parameters, corresponding to the three fields An “empty” binary tree is just a value of null Therefore, we can’t have an isEmpty() method (why not?) 14

15 Preorder traversal In preorder, the root is visited first Here ’ s a preorder traversal to print out all the elements in the binary tree: public void preorderPrint(BinaryTree bt) { if (bt == null) return; System.out.println(bt.value); preorderPrint(bt.leftChild); preorderPrint(bt.rightChild); }

Traverse in preorder A.h i d e b f j g c a B.a b d h i e c f g j C.h d i b e a f c j g D.a b c d e f g h i j 16 a bc defg hij

17 Inorder traversal In inorder, the root is visited in the middle Here ’ s an inorder traversal to print out all the elements in the binary tree: public void inorderPrint(BinaryTree bt) { if (bt == null) return; inorderPrint(bt.leftChild); System.out.println(bt.value); inorderPrint(bt.rightChild); }

18 Postorder traversal In postorder, the root is visited last Here ’ s a postorder traversal to print out all the elements in the binary tree: public void postorderPrint(BinaryTree bt) { if (bt == null) return; postorderPrint(bt.leftChild); postorderPrint(bt.rightChild); System.out.println(bt.value); }

19 Tree traversals using “ flags ” The order in which the nodes are visited during a tree traversal can be easily determined by imagining there is a “ flag ” attached to each node, as follows: To traverse the tree, collect the flags: preorderinorderpostorder A BC DEFG A BC DEFG A BC DEFG A B D E C F G D B E A F C G D E B F G C A

Traverse in preorder A.a b c d e f g h i j B.a b d h i e c f g j C.h i d e b f j g c a D.h d i b e a f c j g 20 a bc defg hij

Traverse in postorder A.h i d e b f j g c a B.a b d h i e c f g j C.h d i b e a f c j g D.a b c d e f g h i j 21 a bc defg hij

22 Copying a binary tree In postorder, the root is visited last Here ’ s a postorder traversal to make a complete copy of a given binary tree: public static BinaryTree copyTree(BinaryTree bt) { if (bt == null) return null; BinaryTree left = copyTree(bt.leftChild); BinaryTree right = copyTree(bt.rightChild); return new BinaryTree(bt.value, left, right); }

23 Copying a binary tree Many programs use copy constructors—a constructor that constructs a new object that is a copy of the given object Here ’ s a copy constructor for nonempty binary trees: public BinaryTree(BinaryTree bt) { value = bt.value; if (bt.leftChild != null) { leftChild = new BinaryTree(bt.leftChild); } if (bt.rightChild != null) { rightChild = new BinaryTree(bt.rightChild); }; } Notice the tests to avoid nullPointerException s!

24 Other traversals The other traversals are the reverse of these three standard ones That is, the right subtree is traversed before the left subtree is traversed Reverse preorder: root, right subtree, left subtree Reverse inorder: right subtree, root, left subtree Reverse postorder: right subtree, left subtree, root

25 The End