Tree Traversal/OOP: Difference between revisions
From charlesreid1
(Created page with "=Notes= ==Goodrich Data Structures and Algorithms - Trees== As with prior chapters and topics in the two version of the Goodrich book, Python and Java, there is a difference...") |
No edit summary |
||
| Line 7: | Line 7: | ||
The common thread of both versions of this chapter, the Python and Java versions, is that the material becomes more advanced, incorporating object oriented principles alongside the data structure concepts. This allows simpler concepts learned in prior chapters to be made reusable, and connected to the more advanced concepts that can be found in places like the Collections framework. | The common thread of both versions of this chapter, the Python and Java versions, is that the material becomes more advanced, incorporating object oriented principles alongside the data structure concepts. This allows simpler concepts learned in prior chapters to be made reusable, and connected to the more advanced concepts that can be found in places like the Collections framework. | ||
===Python=== | |||
The Python treatment focuses on the "Template Method Pattern" - the idea that you can find a generalized computation mechanism that can be specialized for a particular application through a series of "hooks". | |||
===Java=== | |||
The Java class concepts are focused more on the (frankly, nonsense) interfaces for Positions and Nodes, which ended up taking an excessive amount of time to properly implement, were quite confusing, etc. Waste of time. Hmm... | |||
Revision as of 06:29, 12 June 2017
Notes
Goodrich Data Structures and Algorithms - Trees
As with prior chapters and topics in the two version of the Goodrich book, Python and Java, there is a difference in the treatment - and as before, I prefer the Python textbook's treatment, but I used Java as the language of implementation.
The common thread of both versions of this chapter, the Python and Java versions, is that the material becomes more advanced, incorporating object oriented principles alongside the data structure concepts. This allows simpler concepts learned in prior chapters to be made reusable, and connected to the more advanced concepts that can be found in places like the Collections framework.
Python
The Python treatment focuses on the "Template Method Pattern" - the idea that you can find a generalized computation mechanism that can be specialized for a particular application through a series of "hooks".
Java
The Java class concepts are focused more on the (frankly, nonsense) interfaces for Positions and Nodes, which ended up taking an excessive amount of time to properly implement, were quite confusing, etc. Waste of time. Hmm...
Flags
| Data Structures Part of Computer Science Notes
This is the staging ground for computer science notes as part of the 2017 CS Study Plan.
Classes of data structures: Abstract Data Types Array-based and Link-based memory management: ArrayLists and Linked Lists Algorithmic Analysis of Data Structures: Algorithmic Analysis of Data Structures Advanced data structures: Advanced Data Structures
|
| Arrays Part of Computer Science Notes
Series on Data Structures Python: Arrays/Python · Arrays/Python/Sizeof · Arrays/Python/AppendCost · Arrays/Python/CaesarCipher · Arrays/Python/CompactArrays · Arrays/Python/DynamicArray Java: Arrays/Java · Arrays/Java/CaesarCipher · Arrays/Java/FisherYates · Arrays/Java/PythonList · Arrays/Java/Repeatedly_Remove Categories: Category:Python Arrays
|
| Stacks and Queues Part of Computer Science Notes
Series on Data Structures
Stacks and Queues: Python StacksQueues/Python · StacksQueues/Python/ArrayStack · StacksQueues/Python/ArrayQueue · StacksQueues/Python/ArrayDeque StacksQueues/Python/LinkedStack
Stacks and Queues: Java StacksQueues/Java · StacksQueues/Java/ArrayStack · StacksQueues/Java/ArrayQueue · StacksQueues/Java/ArrayQueueFS · StacksQueues/Java/ArrayDeque StacksQueues/Java/LinkedStack · StacksQueues/Java/LinkedQueue · StacksQueues/Java/LinkedDeque
Applications Postfix_Expressions#Stacks · StacksQueues/Subsets · StacksQueues/Subsets/Java
|
| Priority Queues and Heaps Part of Computer Science Notes
Series on Data Structures
Java: Priority Queues/Java · Priority Queues/ADT · Priority Queues/Sorted · Priority Queues/Unsorted Performance: Priority Queues/Timing and Performance Applications: Maximum Oriented Priority Queue · Priority Queues/Stack
Priority Queues/Heap · Priority Queues/Java · Priority Queues/Comparators
|
| Linked List Part of Computer Science Notes
Series on Data Structures Java: Linked Lists/Java · Linked Lists/Java/Single · Linked Lists/Java/Double · Linked Lists/Java/Circular Performance: Linked Lists/Java/Timing · Linked Lists/Java/Reverse Python: Linked Lists/Python · Linked Lists/Python/Single
|
| Trees Part of Computer Science Notes
Series on Data Structures Abstract data type: Trees/ADT Concrete implementations: Trees/LinkedTree · Trees/ArrayTree · SimpleTree
Tree Traversal Preorder traversal: Trees/Preorder Postorder traversal: Trees/Postorder In-Order traversal: Binary Trees/Inorder Breadth-First Search: BFS Breadth-First Traversal: BFT Depth-First Search: DFS Depth-First Traversal: DFT OOP Principles for Traversal: Tree Traversal/OOP · Tree Traversal/Traversal Method Template Tree operations: Trees/Operations Performance · Trees/Removal
Tree Applications Finding Minimum in Log N Time: Tree/LogN Min Search
Abstract data type: Binary Trees/ADT Concrete implementations: Binary Trees/LinkedBinTree · Binary Trees/ArrayBinTree Binary Trees/Cheat Sheet · Binary Trees/OOP · Binary Trees/Implementation Notes
|
| Search Trees Part of Computer Science Notes
Series on Data Structures
Binary Search Trees · Balanced Search Trees Trees/OOP · Search Trees/OOP · Tree Traversal/OOP · Binary Trees/Inorder
(Note that heaps are also value-sorting trees with minimums at the top. See Template:PriorityQueuesFlag and Priority Queues.)
|
| Maps and Dictionaries Part of Computer Science Notes
Series on Data Structures
Maps/Dictionaries Maps · Maps/ADT · Maps in Java · Maps/OOP · Maps/Operations and Performance Map implementations: Maps/AbstractMap · Maps/UnsortedArrayMap · Maps/SortedArrayMap Dictionary implementations: Dictionaries/LinkedDict · Dictionaries/ArrayDict
Hashes Hash Maps/OOP · Hash Maps/Operations and Performance Hash Maps/Dynamic Resizing · Hash Maps/Collision Handling with Chaining Hash functions: Hash Functions · Hash Functions/Cyclic Permutation Hash map implementations: Hash Maps/AbstractHashMap · Hash Maps/ChainedHashMap
Skip Lists · Java/ConcurrentSkipList · Java implementations: SkipList
Sets Sets · Sets/ADT · Sets in Java · Sets/OOP · Multisets
|