Trees Nature Lover’s View Of A Tree root branches leaves.
-
Upload
susanna-payne -
Category
Documents
-
view
217 -
download
0
Transcript of Trees Nature Lover’s View Of A Tree root branches leaves.
![Page 1: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/1.jpg)
Trees
![Page 2: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/2.jpg)
Nature Lover’s View Of A Tree
root
branches
leaves
![Page 3: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/3.jpg)
Computer Scientist’s View
branches
leavesroot
nodes
![Page 4: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/4.jpg)
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. Java’s classes.
• Object is at the top of the hierarchy.• Subclasses of Object are next, and so on.
![Page 5: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/5.jpg)
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.
![Page 6: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/6.jpg)
great grand child of root
grand children of root
children of root
Java’s Classes (Part Of Figure 1.1)
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
root
![Page 7: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/7.jpg)
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.
![Page 8: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/8.jpg)
Subtrees
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
root
![Page 9: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/9.jpg)
Leaves
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
![Page 10: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/10.jpg)
Parent, Grandparent, Siblings, Ancestors, Descendants
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
![Page 11: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/11.jpg)
Level 4
Level 3
Level 2
Levels
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
Level 1
![Page 12: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/12.jpg)
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.
![Page 13: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/13.jpg)
height = depth = number of levels
Level 3
Object
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
Level 4
Level 2
Level 1
![Page 14: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/14.jpg)
Node Degree = Number Of ChildrenObject
Number Throwable OutputStream
Integer Double Exception FileOutputStream
RuntimeException
3
2 1 1
0 0 1 0
0
![Page 15: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/15.jpg)
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
![Page 16: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/16.jpg)
Binary Tree
• Finite (possibly empty) collection of elements.
• A nonempty binary tree has a root element.
• The remaining elements (if any) are partitioned into two binary trees.
• These are called the left and right subtrees of the binary tree.
![Page 17: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/17.jpg)
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.
![Page 18: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/18.jpg)
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.
![Page 19: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/19.jpg)
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 ((, )).
![Page 20: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/20.jpg)
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
![Page 21: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/21.jpg)
Infix Form
• Normal way to write an expression.
• Binary operators come in between their left and right operands. a * b a + b * c a * b / c (a + b) * (c + d) + e – f/g*h + 3.25
![Page 22: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/22.jpg)
Operator Priorities
• How do you figure out the operands of an operator? 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 that has higher priority.
![Page 23: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/23.jpg)
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
![Page 24: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/24.jpg)
Delimiters
• Subexpression within delimiters is treated as a single operand, independent from the remainder of the expression. (a + b) * (c – d) / (e – f)
![Page 25: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/25.jpg)
Infix Expression Is Hard To Parse
• Need operator priorities, tie breaker, and delimiters.
• This makes computer evaluation more difficult than is necessary.
• Postfix and prefix expression forms do not rely on operator priorities, a tie breaker, or delimiters.
• So it is easier for a computer to evaluate expressions that are in these forms.
![Page 26: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/26.jpg)
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 after the postfix form of their operands. Infix = a + b Postfix = ab+
![Page 27: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/27.jpg)
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 + /
![Page 28: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/28.jpg)
Unary Operators
• Replace with new symbols. + a => a @ + a + b => a @ b + - a => a ? - a-b => a ? b -
![Page 29: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/29.jpg)
Postfix Evaluation
• Scan postfix expression from left to right pushing operands on to a stack.
• When an operator is encountered, pop as many operands as this operator needs; evaluate the operator; push the result on to the stack.
• This works because, in postfix, operators come immediately after their operands.
![Page 30: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/30.jpg)
Postfix Evaluation
• (a + b) * (c – d) / (e + f)
• a b + c d - * e f + /
• a b + c d - * e f + /
stack
a
• a b + c d - * e f + /
b• a b + c d - * e f + /
![Page 31: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/31.jpg)
Postfix Evaluation
• (a + b) * (c – d) / (e + f)
• a b + c d - * e f + /
• a b + 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 + /
![Page 32: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/32.jpg)
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)
![Page 33: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/33.jpg)
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 + /
![Page 34: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/34.jpg)
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 + /
![Page 35: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/35.jpg)
Prefix Form
• The prefix 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 prefix forms.
• Operators come immediately before the prefix form of their operands. Infix = a + b Postfix = ab+ Prefix = +ab
![Page 36: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/36.jpg)
Binary Tree Form
• a + b+
a b
• - a -
a
![Page 37: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/37.jpg)
Binary Tree Form
• (a + b) * (c – d) / (e + f)
/
+
a b
-
c d
+
e f
*
/
![Page 38: Trees Nature Lover’s View Of A Tree root branches leaves.](https://reader034.fdocuments.in/reader034/viewer/2022051516/56649e7e5503460f94b81f99/html5/thumbnails/38.jpg)
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
*
/