SlideShare a Scribd company logo
LAB #9
Prepared by: Berk Soysal
2016 Winter
Recursion is the process of defining
something in terms of itself.
2016 Winter
public class Example{
private static int a=0;
public static void main(String[] args){
myRecursiveMethod();
}
public static int myRecursiveMethod(){
a++;
if(a==10){
System.out.println("Recursion ends when a is " + a);
return a;
}
System.out.println("a is:"+ a);
return myRecursiveMethod();
}
}
2016 Winter
public class Mystery extends Program {
public void run() {
int result = compute(4);
System.out.println(result);
}
public int compute(int n) {
if(n == 1) {
return 1;
} else {
return n * compute(n - 1); // here's the recursive invocation
}
}
}
2016 Winter
You may object: How is this useful? I could just as easily
have written the program using a loop!
We prefer recursive solutions over iterative ones when:
• The implementation of the recursion is much simpler
than the iterative solution(e.g. factorial calculation,
binary search trees)
• I can be reasonably assured that the depth of the
recursion will not cause a stack overflow.
• In most of other situations LOOPS are preferred!
2016 Winter
• 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
2016 Winter
a
b c
d e
g h i
l
f
j k
The root is
drawn at the
top
2016 Winter
• 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
2016 Winter
• 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
2016 Winter
• A binary tree is balanced if every level above the lowest is
“full” (contains 2n nodes)
• In most applications, a reasonably balanced binary tree is
desirable
a
b c
d e f g
h i j
A balanced binary tree
a
b
c
d
e
f
g h
i j
An unbalanced binary tree
2016 Winter
• 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)
10
8 15
4 12 20
17
2016 Winter
• Look at array location (lo + hi)/2
2 3 5 7 11 13 17
0 1 2 3 4 5 6
Searching for 5:
(0+6)/2 = 3
hi = 2;
(0 + 2)/2 = 1 lo = 2;
(2+2)/2=2
7
3 13
2 5 11 17
Using a binary
search tree
2016 Winter
• 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
2016 Winter
• 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);
}
2016 Winter
• 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);
}
2016 Winter
• 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);
}
2016 Winter
• 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:
preorder inorder postorder
A
B C
D E F G
A
B C
D E F G
A
B C
D E F G
A B D E C F G D B E A F C G D E B F G C A
2016 Winter
2016 Winter
2016 Winter
2016 Winter
2016 Winter
Java Tutorial Lab 9
Java Tutorial Lab 9
Java Tutorial Lab 9
Following website offers a great animation on Binary Search Tree Construction
https://www.cs.usfca.edu/~galles/visualization/BST.html
25
3 37
1 19 48
Java Tutorial Lab 9
Java Tutorial Lab 9
Java Tutorial Lab 9
Java Tutorial Lab 9
Java Tutorial Lab 9

More Related Content

What's hot (20)

PDF
Standard template library
Jancypriya M
 
PPTX
How to choose best containers in STL (C++)
Sangharsh agarwal
 
PPT
Data structures
Manaswi Sharma
 
PPTX
Standard template library
Sukriti Singh
 
PPTX
Standard Template Library
GauravPatil318
 
PDF
An Introduction to the C++ Standard Library
Joyjit Choudhury
 
PPT
Data Structure In C#
Shahzad
 
PPTX
Data structures
Sneha Chopra
 
PPTX
Data structures and algorithms
Hoang Nguyen
 
PPT
Stl Containers
ppd1961
 
PPTX
A Presentation About Array Manipulation(Insertion & Deletion in an array)
Imdadul Himu
 
ODP
C++ STL 概觀
PingLun Liao
 
PDF
Introducing Pattern Matching in Scala
Ayush Mishra
 
PPTX
Data structure using c module 1
smruti sarangi
 
PDF
Lecture-05-DSA
Haitham El-Ghareeb
 
PPTX
Radix sort
zahraa F.Muhsen
 
PDF
Data Structure and its Fundamentals
Hitesh Mohapatra
 
PPT
Standard Template Library
Kumar Gaurav
 
PPT
Stl (standard template library)
Hemant Jain
 
PPTX
Step By Step Guide to Learn R
Venkata Reddy Konasani
 
Standard template library
Jancypriya M
 
How to choose best containers in STL (C++)
Sangharsh agarwal
 
Data structures
Manaswi Sharma
 
Standard template library
Sukriti Singh
 
Standard Template Library
GauravPatil318
 
An Introduction to the C++ Standard Library
Joyjit Choudhury
 
Data Structure In C#
Shahzad
 
Data structures
Sneha Chopra
 
Data structures and algorithms
Hoang Nguyen
 
Stl Containers
ppd1961
 
A Presentation About Array Manipulation(Insertion & Deletion in an array)
Imdadul Himu
 
C++ STL 概觀
PingLun Liao
 
Introducing Pattern Matching in Scala
Ayush Mishra
 
Data structure using c module 1
smruti sarangi
 
Lecture-05-DSA
Haitham El-Ghareeb
 
Radix sort
zahraa F.Muhsen
 
Data Structure and its Fundamentals
Hitesh Mohapatra
 
Standard Template Library
Kumar Gaurav
 
Stl (standard template library)
Hemant Jain
 
Step By Step Guide to Learn R
Venkata Reddy Konasani
 

Viewers also liked (7)

PPTX
Java Tutorial Lab 8
Berk Soysal
 
PPTX
Self Evaluation Test
Berk Soysal
 
PPTX
Java Tutorial Lab 5
Berk Soysal
 
PPTX
Java Tutorial Lab 6
Berk Soysal
 
PPTX
Java Tutorial Lab 3
Berk Soysal
 
PPTX
Java Tutorial Lab 4
Berk Soysal
 
PPTX
Java Tutorial Lab 1
Berk Soysal
 
Java Tutorial Lab 8
Berk Soysal
 
Self Evaluation Test
Berk Soysal
 
Java Tutorial Lab 5
Berk Soysal
 
Java Tutorial Lab 6
Berk Soysal
 
Java Tutorial Lab 3
Berk Soysal
 
Java Tutorial Lab 4
Berk Soysal
 
Java Tutorial Lab 1
Berk Soysal
 
Ad

Similar to Java Tutorial Lab 9 (20)

PPT
Binary trees
Simratpreet Singh
 
PPT
09 binary-trees
Tech_MX
 
PPTX
Unit 6 tree
Dabbal Singh Mahara
 
PPTX
Unit – vi tree
Tribhuvan University
 
PPT
Trees
9590133127
 
PPT
Data Structure And Algorithms for Computer Science
ManishShukla712917
 
PPT
Binary Search Tree Traversal.ppt
Riannel Tecson
 
PDF
481803111-Trees-Unit-Review-pdf - Copy.pdf
barsubiasarah
 
PPT
Tree and Binary Search tree
Muhazzab Chouhadry
 
PDF
Binary Tree - Algorithms
CourseHunt
 
PPT
BINARY TREE REPRESENTATION.ppt
SeethaDinesh
 
PPT
Algorithm and Data Structure - Binary Trees
donotreply20
 
PDF
Chapter 5_Trees.pdf
ssuser50179b
 
PPTX
Lecture-7-Binary-Trees-and-Algorithms-11052023-054009pm.pptx
HamzaUsman48
 
PPTX
Tree
knightofheart
 
PPT
Binary Trees.ppt
Riannel Tecson
 
PPT
Binary trees
Rajendran
 
DOCX
DS UNIT5_BINARY TREES.docx
VeerannaKotagi1
 
PPTX
Unit-VStackStackStackStackStackStack.pptx
nakshpub
 
PPTX
Introduction to Tree_Data Structure.pptx
PoojariniMitra1
 
Binary trees
Simratpreet Singh
 
09 binary-trees
Tech_MX
 
Unit 6 tree
Dabbal Singh Mahara
 
Unit – vi tree
Tribhuvan University
 
Trees
9590133127
 
Data Structure And Algorithms for Computer Science
ManishShukla712917
 
Binary Search Tree Traversal.ppt
Riannel Tecson
 
481803111-Trees-Unit-Review-pdf - Copy.pdf
barsubiasarah
 
Tree and Binary Search tree
Muhazzab Chouhadry
 
Binary Tree - Algorithms
CourseHunt
 
BINARY TREE REPRESENTATION.ppt
SeethaDinesh
 
Algorithm and Data Structure - Binary Trees
donotreply20
 
Chapter 5_Trees.pdf
ssuser50179b
 
Lecture-7-Binary-Trees-and-Algorithms-11052023-054009pm.pptx
HamzaUsman48
 
Binary Trees.ppt
Riannel Tecson
 
Binary trees
Rajendran
 
DS UNIT5_BINARY TREES.docx
VeerannaKotagi1
 
Unit-VStackStackStackStackStackStack.pptx
nakshpub
 
Introduction to Tree_Data Structure.pptx
PoojariniMitra1
 
Ad

Recently uploaded (20)

PDF
What Is an Internal Quality Audit and Why It Matters for Your QMS
BizPortals365
 
PPTX
IObit Driver Booster Pro Crack Download Latest Version
chaudhryakashoo065
 
PPTX
Quality on Autopilot: Scaling Testing in Uyuni
Oscar Barrios Torrero
 
PDF
Cloud computing Lec 02 - virtualization.pdf
asokawennawatte
 
PDF
TEASMA: A Practical Methodology for Test Adequacy Assessment of Deep Neural N...
Lionel Briand
 
PPTX
Automatic_Iperf_Log_Result_Excel_visual_v2.pptx
Chen-Chih Lee
 
PDF
Laboratory Workflows Digitalized and live in 90 days with Scifeon´s SAPPA P...
info969686
 
PDF
Code Once; Run Everywhere - A Beginner’s Journey with React Native
Hasitha Walpola
 
PPTX
Iobit Driver Booster Pro 12 Crack Free Download
chaudhryakashoo065
 
PDF
Designing Accessible Content Blocks (1).pdf
jaclynmennie1
 
PDF
AWS Consulting Services: Empowering Digital Transformation with Nlineaxis
Nlineaxis IT Solutions Pvt Ltd
 
PDF
AI Software Development Process, Strategies and Challenges
Net-Craft.com
 
PDF
IObit Uninstaller Pro 14.3.1.8 Crack for Windows Latest
utfefguu
 
PPTX
IDM Crack with Internet Download Manager 6.42 [Latest 2025]
HyperPc soft
 
PPTX
For my supp to finally picking supp that work
necas19388
 
PPTX
Android Notifications-A Guide to User-Facing Alerts in Android .pptx
Nabin Dhakal
 
PPTX
CV-Project_2024 version 01222222222.pptx
MohammadSiddiqui70
 
PPTX
EO4EU Ocean Monitoring: Maritime Weather Routing Optimsation Use Case
EO4EU
 
PDF
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
 
PDF
Continouous failure - Why do we make our lives hard?
Papp Krisztián
 
What Is an Internal Quality Audit and Why It Matters for Your QMS
BizPortals365
 
IObit Driver Booster Pro Crack Download Latest Version
chaudhryakashoo065
 
Quality on Autopilot: Scaling Testing in Uyuni
Oscar Barrios Torrero
 
Cloud computing Lec 02 - virtualization.pdf
asokawennawatte
 
TEASMA: A Practical Methodology for Test Adequacy Assessment of Deep Neural N...
Lionel Briand
 
Automatic_Iperf_Log_Result_Excel_visual_v2.pptx
Chen-Chih Lee
 
Laboratory Workflows Digitalized and live in 90 days with Scifeon´s SAPPA P...
info969686
 
Code Once; Run Everywhere - A Beginner’s Journey with React Native
Hasitha Walpola
 
Iobit Driver Booster Pro 12 Crack Free Download
chaudhryakashoo065
 
Designing Accessible Content Blocks (1).pdf
jaclynmennie1
 
AWS Consulting Services: Empowering Digital Transformation with Nlineaxis
Nlineaxis IT Solutions Pvt Ltd
 
AI Software Development Process, Strategies and Challenges
Net-Craft.com
 
IObit Uninstaller Pro 14.3.1.8 Crack for Windows Latest
utfefguu
 
IDM Crack with Internet Download Manager 6.42 [Latest 2025]
HyperPc soft
 
For my supp to finally picking supp that work
necas19388
 
Android Notifications-A Guide to User-Facing Alerts in Android .pptx
Nabin Dhakal
 
CV-Project_2024 version 01222222222.pptx
MohammadSiddiqui70
 
EO4EU Ocean Monitoring: Maritime Weather Routing Optimsation Use Case
EO4EU
 
Difference Between Kubernetes and Docker .pdf
Kindlebit Solutions
 
Continouous failure - Why do we make our lives hard?
Papp Krisztián
 

Java Tutorial Lab 9

  • 1. LAB #9 Prepared by: Berk Soysal 2016 Winter
  • 2. Recursion is the process of defining something in terms of itself. 2016 Winter
  • 3. public class Example{ private static int a=0; public static void main(String[] args){ myRecursiveMethod(); } public static int myRecursiveMethod(){ a++; if(a==10){ System.out.println("Recursion ends when a is " + a); return a; } System.out.println("a is:"+ a); return myRecursiveMethod(); } } 2016 Winter
  • 4. public class Mystery extends Program { public void run() { int result = compute(4); System.out.println(result); } public int compute(int n) { if(n == 1) { return 1; } else { return n * compute(n - 1); // here's the recursive invocation } } } 2016 Winter
  • 5. You may object: How is this useful? I could just as easily have written the program using a loop! We prefer recursive solutions over iterative ones when: • The implementation of the recursion is much simpler than the iterative solution(e.g. factorial calculation, binary search trees) • I can be reasonably assured that the depth of the recursion will not cause a stack overflow. • In most of other situations LOOPS are preferred! 2016 Winter
  • 6. • 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 2016 Winter
  • 7. a b c d e g h i l f j k The root is drawn at the top 2016 Winter
  • 8. • 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 2016 Winter
  • 9. • 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 2016 Winter
  • 10. • A binary tree is balanced if every level above the lowest is “full” (contains 2n nodes) • In most applications, a reasonably balanced binary tree is desirable a b c d e f g h i j A balanced binary tree a b c d e f g h i j An unbalanced binary tree 2016 Winter
  • 11. • 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) 10 8 15 4 12 20 17 2016 Winter
  • 12. • Look at array location (lo + hi)/2 2 3 5 7 11 13 17 0 1 2 3 4 5 6 Searching for 5: (0+6)/2 = 3 hi = 2; (0 + 2)/2 = 1 lo = 2; (2+2)/2=2 7 3 13 2 5 11 17 Using a binary search tree 2016 Winter
  • 13. • 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 2016 Winter
  • 14. • 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); } 2016 Winter
  • 15. • 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); } 2016 Winter
  • 16. • 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); } 2016 Winter
  • 17. • 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: preorder inorder postorder A B C D E F G A B C D E F G A B C D E F G A B D E C F G D B E A F C G D E B F G C A 2016 Winter
  • 25. Following website offers a great animation on Binary Search Tree Construction https://www.cs.usfca.edu/~galles/visualization/BST.html 25 3 37 1 19 48