Upload
prerakraja
View
219
Download
0
Embed Size (px)
Citation preview
7/23/2019 Trees Intro
1/38
Trees
7/23/2019 Trees Intro
2/38
Nature Lovers View Of A Tree
root
branches
leaves
7/23/2019 Trees Intro
3/38
Computer Scientists View
branches
leavesroot
nodes
7/23/2019 Trees Intro
4/38
Linear Lists And Trees
Linear lists are useful for serially ordered data.
(e0, e1, e2, , en-1)
Days of week.
Months in a year. Students in this class.
Trees are useful for hierarchically ordered data.
Employees of a corporation.
President, vice presidents, managers, and so on. Javas classes.
Object is at the top of the hierarchy.
Subclasses of Object are next, and so on.
7/23/2019 Trees Intro
5/38
Hierarchical Data And Trees
The element at the top of the hierarchy is the
root.
Elements next in the hierarchy are the children
of the root.
Elements next in the hierarchy are the
grandchildren of the root, and so on. Elements that have no children are leaves.
7/23/2019 Trees Intro
6/38
great grand child of root
grand children of root
children of root
Javas Classes
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
root
7/23/2019 Trees Intro
7/38
Definition
A tree t is a finite nonempty set of elements.
One of these elements is called the root. The remaining elements, if any, are
partitioned into trees, which are called the
subtrees of t.
7/23/2019 Trees Intro
8/38
Subtrees
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
root
7/23/2019 Trees Intro
9/38
Leaves
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
7/23/2019 Trees Intro
10/38
Parent, Grandparent, Siblings, Ancestors, Descendants
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
7/23/2019 Trees Intro
11/38
Level 4
Level 3
Level 2
Levels
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
Level 1
7/23/2019 Trees Intro
12/38
Caution
Some texts start level numbers at 0 rather than
at 1.
Root is at level 0.
Its children are at level 1.
The grand children of the root are at level 2.
And so on.
We shall number levels with the root at level 1.
7/23/2019 Trees Intro
13/38
height = depth = number of levels
Level 3
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
Level 4
Level 2
Level 1
7/23/2019 Trees Intro
14/38
Node Degree = Number Of ChildrenObject
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
3
2 1 1
0 0 1 0
0
7/23/2019 Trees Intro
15/38
Tree Degree = Max Node Degree
Degree of tree = 3.
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
3
2 1 1
0 0 1 0
0
7/23/2019 Trees Intro
16/38
Binary Tree
Finite (possibly empty) collection of elements.
A nonemptybinary tree has a root element.
The remaining elements (if any) are partitioned
into twobinary trees.
These are called the left and right subtrees of the
binary tree.
7/23/2019 Trees Intro
17/38
Differences Between A Tree & A Binary Tree
No node in a binary tree may have a degree
more than 2, whereas there is no limit on
the degree of a node in a tree.
A binary tree may be empty; a tree cannot
be empty.
7/23/2019 Trees Intro
18/38
Differences Between A Tree & A Binary Tree
The subtrees of a binary tree are ordered;
those of a tree are not ordered.
a
b
a
b
Are different when viewed as binary trees.
Are the same when viewed as trees.
7/23/2019 Trees Intro
19/38
Arithmetic Expressions
(a + b) * (c + d) + e f/g*h + 3.25
Expressions comprise three kinds of entities.
Operators (+, -, /, *).
Operands (a,b, c, d, e, f, g, h, 3.25, (a + b), (c + d),
etc.).
Delimiters ((, )).
7/23/2019 Trees Intro
20/38
Operator Degree
Number of operands that the operator requires.
Binary operator requires two operands.
a + b
c / d
e - f
Unary operator requires one operand. + g
- h
7/23/2019 Trees Intro
21/38
Infix Form
Normal way to write an expression.
Binary operators come inbetween their left and
right operands.
a * b
a + b * c
a * b / c
(a + b) * (c + d) + e f/g*h + 3.25
7/23/2019 Trees Intro
22/38
Operator Priorities
How do you figure out the operands of anoperator?
a + b * c a * b + c / d
This is done by assigning operator priorities.
priority(*) = priority(/) > priority(+) = priority(-)
When an operand lies between two operators,the operand associates with the operator thathas higher priority.
7/23/2019 Trees Intro
23/38
Tie Breaker
When an operand lies between two operators
that have the same priority, the operand
associates with the operator on the left.
a + b - c
a * b / c / d
7/23/2019 Trees Intro
24/38
Delimiters
Subexpression within delimiters is treated
as a single operand, independent from the
remainder of the expression.
(a + b) * (c d) / (e f)
7/23/2019 Trees Intro
25/38
Infix Expression Is Hard To Parse
Need operator priorities, tie breaker, anddelimiters.
This makes computer evaluation moredifficult than is necessary.
Postfix and prefix expression forms do notrely on operator priorities, a tie breaker, ordelimiters.
So it is easier for a computer to evaluateexpressions that are in these forms.
7/23/2019 Trees Intro
26/38
Postfix Form
The postfix form of a variable or constant is
the same as its infix form.
a,b, 3.25
The relative order of operands is the same
in infix and postfix forms.
Operators come immediately afterthe
postfix form of their operands. Infix = a + b
Postfix = ab+
7/23/2019 Trees Intro
27/38
Postfix Examples
Infix = a + b * c
Postfix = a b c * +
Infix = a * b + c Postfix = a b * c +
Infix = (a + b) * (c d) / (e + f) Postfix = a b + c d - * e f + /
7/23/2019 Trees Intro
28/38
Unary Operators
Replace with new symbols.
+ a => a @
+ a + b => a @ b +
- a => a ?
- a-b => a ? b -
7/23/2019 Trees Intro
29/38
Postfix Evaluation
Scan postfix expression from left to rightpushing operands on to a stack.
When an operator is encountered, pop asmany operands as this operator needs;evaluate the operator; push the result on tothe stack.
This works because, in postfix, operatorscome immediately after their operands.
7/23/2019 Trees Intro
30/38
Postfix Evaluation
(a + b) * (c d) / (e + f)
a b + c d - * e f + /
ab + c d - * e f + /
stack
a
a b + c d - * e f + /
b a b + c d - * e f + /
7/23/2019 Trees Intro
31/38
Postfix Evaluation
(a + b) * (c d) / (e + f)
a b + c d - * e f + /
ab + c d - * e f + /
stack
(a + b)
a b + c d - * e f + /
a b + c d - * e f + / a b + c d - * e f + /
c
a b + c d - * e f + /
d
a b + c d - * e f + /
7/23/2019 Trees Intro
32/38
Postfix Evaluation
(a + b) * (c d) / (e + f)
a b + c d - * e f + /
stack
(a + b)
a b + c d - * e f + /
(c d)
7/23/2019 Trees Intro
33/38
Postfix Evaluation
(a + b) * (c d) / (e + f)
a b + c d - * e f + /
stack
(a + b)*(c d)
a b + c d - * e f + /
e
a b + c d - * e f + /
a b + c d - * e f + / f
a b + c d - * e f + /
7/23/2019 Trees Intro
34/38
Postfix Evaluation
(a + b) * (c d) / (e + f)
a b + c d - * e f + /
stack
(a + b)*(c d)
a b + c d - * e f + /
(e + f)
a b + c d - * e f + /
a b + c d - * e f + /
a b + c d - * e f + / a b + c d - * e f + /
7/23/2019 Trees Intro
35/38
Prefix Form
The prefix form of a variable or constant isthe same as its infix form.
a,b, 3.25
The relative order of operands is the samein infix and prefix forms.
Operators come immediatelybefore theprefix form of their operands.
Infix = a + b
Postfix = ab+
Prefix = +ab
7/23/2019 Trees Intro
36/38
Binary Tree Form
a + b+
a b
- a -
a
7/23/2019 Trees Intro
37/38
Binary Tree Form
(a + b) * (c d) / (e + f)
/
+
a b
-
c d
+
e f
*
/
7/23/2019 Trees Intro
38/38
Merits Of Binary Tree Form
Left and right operands are easy to visualize.
Code optimization algorithms work with the
binary tree form of an expression.
Simple recursive evaluation of expression.
+
a b
-
c d
+e f
*
/