{"version":1,"pages":[{"id":"-MBbA9qs52eKlEOGPOFu","title":"Preface","pathname":"/dsa-java","siteSpaceId":"sitesp_3hz5v","description":"Jinho D. Choi"},{"id":"DEn8DDVCgAixxP5PRzF7","title":"Syllabus","pathname":"/dsa-java/master/syllabus","siteSpaceId":"sitesp_3hz5v","description":"Spring 2023","breadcrumbs":[{"label":"Preface"}]},{"id":"SANNmVAZ8EVZFes8GveG","title":"Schedule","pathname":"/dsa-java/master/schedule","siteSpaceId":"sitesp_3hz5v","description":"Spring 2023","breadcrumbs":[{"label":"Preface"}]},{"id":"-MBbk7SphhDL63H8WUHw","title":"0. Getting Started","pathname":"/dsa-java/getting-started","siteSpaceId":"sitesp_3hz5v","description":"This chapter helps you set up the development environment for this course."},{"id":"-MBvnRVfErMAPLYGt8vH","title":"0.1. Environment Setup","pathname":"/dsa-java/getting-started/environment-setup","siteSpaceId":"sitesp_3hz5v","description":"Development kit, version control system, integrated development environment, and project management for Java programming.","breadcrumbs":[{"label":"0. Getting Started"}]},{"id":"-MBvtL4FhTt_1rZ_N3Ls","title":"0.2. Quiz","pathname":"/dsa-java/getting-started/exercises","siteSpaceId":"sitesp_3hz5v","description":"Quiz 0: Getting Started","breadcrumbs":[{"label":"0. Getting Started"}]},{"id":"-MBbBg4hTs57WR8JmXGY","title":"1. Java Essentials","pathname":"/dsa-java/java-essentials","siteSpaceId":"sitesp_3hz5v","description":"This chapter explains essential object-oriented programming features in Java to implement data structures and algorithms."},{"id":"-MBv4i4O39vprBUAnfIV","title":"1.1. Abstraction","pathname":"/dsa-java/java-essentials/abstraction","siteSpaceId":"sitesp_3hz5v","description":"Different types of objects and inheritances in Java.","breadcrumbs":[{"label":"1. Java Essentials"}]},{"id":"-MBv6nf_qcgU1gs7qbGo","title":"1.2. Implementation","pathname":"/dsa-java/java-essentials/implementation","siteSpaceId":"sitesp_3hz5v","description":"LongInteger: implementation.","breadcrumbs":[{"label":"1. Java Essentials"}]},{"id":"-MCE6WpMoKdsJr5ZpKJH","title":"1.3. Unit Testing","pathname":"/dsa-java/java-essentials/unit-testing","siteSpaceId":"sitesp_3hz5v","description":"LongInteger: unit tests.","breadcrumbs":[{"label":"1. Java Essentials"}]},{"id":"-MBw-3HnBRU3Z9934h3d","title":"1.4. Quiz","pathname":"/dsa-java/java-essentials/exercises","siteSpaceId":"sitesp_3hz5v","description":"Quiz 1: Java Essentials","breadcrumbs":[{"label":"1. Java Essentials"}]},{"id":"-MBeA9pmiKK5N4e9KPdO","title":"2. Priority Queues","pathname":"/dsa-java/priority-queues","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses different types of priority queues and benchmarks their performance in terms of the worst-case complexities."},{"id":"-MCmuNsYKbRs_gpNgNMP","title":"2.1. Simple Priority Queues","pathname":"/dsa-java/priority-queues/simple-priority-queues","siteSpaceId":"sitesp_3hz5v","description":"Lazy and eager priority queues.","breadcrumbs":[{"label":"2. Priority Queues"}]},{"id":"-MCn87dQN8S_RCJrNip5","title":"2.2. Binary Heap","pathname":"/dsa-java/priority-queues/binary-heaps","siteSpaceId":"sitesp_3hz5v","description":"Operations: swim and sink.","breadcrumbs":[{"label":"2. Priority Queues"}]},{"id":"-MEzpncZYnNdBSJFCvkY","title":"2.3. Unit Testing","pathname":"/dsa-java/priority-queues/unit-testing","siteSpaceId":"sitesp_3hz5v","description":"Robustness tests.","breadcrumbs":[{"label":"2. Priority Queues"}]},{"id":"-MCxOCC9e8YmI_nuRi6h","title":"2.4. Benchmarking","pathname":"/dsa-java/priority-queues/benchmarking","siteSpaceId":"sitesp_3hz5v","description":"Speed vs. complexity.","breadcrumbs":[{"label":"2. Priority Queues"}]},{"id":"-MEzpOwdDZemEQiHXtH1","title":"2.5. Quiz","pathname":"/dsa-java/priority-queues/exercises","siteSpaceId":"sitesp_3hz5v","description":"Quiz 2: Priority Queues","breadcrumbs":[{"label":"2. Priority Queues"}]},{"id":"-MBeAE3UBNw9_JFwGF8T","title":"3. Sorting Algorithms","pathname":"/dsa-java/sorting-algorithms","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses different types of sorting algorithms and benchmarks their performance in terms of comparisons and assignments."},{"id":"-MGfvfg7so-vAPgsAo_f","title":"3.1. Abstraction","pathname":"/dsa-java/sorting-algorithms/abstraction","siteSpaceId":"sitesp_3hz5v","description":"The abstract class for all sorting algorithms.","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MHE-SQp83NMj8BhkG47","title":"3.2. Comparison-based Sort","pathname":"/dsa-java/sorting-algorithms/3.2.-comparison-based-sort","siteSpaceId":"sitesp_3hz5v","description":"Selection sort, heap sort, insertion sort, shell sort.","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MGfvDEt1aVYYY52XVul","title":"3.3. Divide & Conquer Sort","pathname":"/dsa-java/sorting-algorithms/divide-and-conquer-sort","siteSpaceId":"sitesp_3hz5v","description":"Merge sort, quick sort, intro sort","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MGfvIvCTFbs7OCSYY5Y","title":"3.4. Distribution-based Sort","pathname":"/dsa-java/sorting-algorithms/distribution-based-sort","siteSpaceId":"sitesp_3hz5v","description":"Bucket sort, radix sort.","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MGfvT_5CSu9pB2UhgYO","title":"3.5. Quiz","pathname":"/dsa-java/sorting-algorithms/exercises","siteSpaceId":"sitesp_3hz5v","description":"Quiz 3: Sorting Algorithms","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MHlYX16Cr3G5J4wFxU9","title":"3.6. Homework","pathname":"/dsa-java/sorting-algorithms/homework","siteSpaceId":"sitesp_3hz5v","description":"This section explains the homework assignment regarding Hybrid Sort.","breadcrumbs":[{"label":"3. Sorting Algorithms"}]},{"id":"-MBeKhJVhaO_eLUAp7uv","title":"4. Binary Search Trees","pathname":"/dsa-java/binary-search-trees","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses binary search trees using different balancing algorithms."},{"id":"-MIK8W7wnEyNqopFPR_N","title":"4.1. Binary Search Trees","pathname":"/dsa-java/binary-search-trees/binary-search-trees","siteSpaceId":"sitesp_3hz5v","description":"This section discusses abstraction of binary search trees.","breadcrumbs":[{"label":"4. Binary Search Trees"}]},{"id":"-MINEhMPhUhnow43yHCM","title":"4.2. Balanced BST","pathname":"/dsa-java/binary-search-trees/balanced-bst","siteSpaceId":"sitesp_3hz5v","description":"This section discusses abstraction of binary search trees.","breadcrumbs":[{"label":"4. Binary Search Trees"}]},{"id":"-MINC-aOwIfIfqRFzdMN","title":"4.2. AVL Trees","pathname":"/dsa-java/binary-search-trees/avl-trees","siteSpaceId":"sitesp_3hz5v","description":"This section discusses a type of balanced binary search trees called AVL Trees.","breadcrumbs":[{"label":"4. Binary Search Trees"}]},{"id":"-MINC2rzjD9AFV_J232o","title":"4.3. Red-Black Trees","pathname":"/dsa-java/binary-search-trees/red-black-trees","siteSpaceId":"sitesp_3hz5v","description":"This section discusses a type of balanced binary search trees called Red-Black Trees.","breadcrumbs":[{"label":"4. Binary Search Trees"}]},{"id":"-MItaS8OCcPoYxgiQF2H","title":"4.4. Quiz","pathname":"/dsa-java/binary-search-trees/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in balanced binary search trees.","breadcrumbs":[{"label":"4. Binary Search Trees"}]},{"id":"-MBeKky8MblM9L8djevs","title":"5. Tries","pathname":"/dsa-java/tries","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses tries, also known as prefix trees."},{"id":"-MIv2CFfXFvCLNjApZWK","title":"5.1. Concept","pathname":"/dsa-java/tries/concept","siteSpaceId":"sitesp_3hz5v","description":"This section gives an overview of tries.","breadcrumbs":[{"label":"5. Tries"}]},{"id":"-MJ2jW1PbY3Xmtiw1aIE","title":"5.2. Implementation","pathname":"/dsa-java/tries/implementation","siteSpaceId":"sitesp_3hz5v","description":"This section describes how to implement a trie.","breadcrumbs":[{"label":"5. Tries"}]},{"id":"-MJ2jafx84lsNAO0L2XO","title":"5.3. Quiz","pathname":"/dsa-java/tries/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in tries.","breadcrumbs":[{"label":"5. Tries"}]},{"id":"-MJ2jqxwKWxak6Des8x8","title":"5.4. Homework","pathname":"/dsa-java/tries/homework","siteSpaceId":"sitesp_3hz5v","description":"This section explains the homework assignment regarding Autocomplete.","breadcrumbs":[{"label":"5. Tries"}]},{"id":"-MBeKowW5GfpUKtOGzjX","title":"6. Disjoint Sets","pathname":"/dsa-java/disjoint-sets","siteSpaceId":"sitesp_3hz5v","description":"This chapter discuss disjoint sets, also known as union-find."},{"id":"-MK0d3G7SKsvSVEkY-RW","title":"6.1. Concept","pathname":"/dsa-java/disjoint-sets/concept","siteSpaceId":"sitesp_3hz5v","description":"This section describes disjoint sets","breadcrumbs":[{"label":"6. Disjoint Sets"}]},{"id":"-MK0ejCwSIDqciUzhgYS","title":"6.2. Implementation","pathname":"/dsa-java/disjoint-sets/implementation","siteSpaceId":"sitesp_3hz5v","description":"This sections discusses the implementation of disjoint sets.","breadcrumbs":[{"label":"6. Disjoint Sets"}]},{"id":"-MK_WRlk2OsRqIvW7VWX","title":"6.3. Quiz","pathname":"/dsa-java/disjoint-sets/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in disjoint sets.","breadcrumbs":[{"label":"6. Disjoint Sets"}]},{"id":"-MBeKr900GvkdEu32olO","title":"7. Graphs","pathname":"/dsa-java/graphs","siteSpaceId":"sitesp_3hz5v","description":"This chapter implementations of basic algorithms related to graphs."},{"id":"-MKAqzzmkyDEKQOkhnZO","title":"7.1. Implementation","pathname":"/dsa-java/graphs/implementation","siteSpaceId":"sitesp_3hz5v","description":"This section describes how to implement a graph structure.","breadcrumbs":[{"label":"7. Graphs"}]},{"id":"-MK_lZ2-Z_EG13iqIx4m","title":"7.2. Cycle Detection","pathname":"/dsa-java/graphs/cycle-detection","siteSpaceId":"sitesp_3hz5v","description":"This section describes an algorithm to detect a cycle in a graph.","breadcrumbs":[{"label":"7. Graphs"}]},{"id":"-MK_oY12-Sy8sFgdpePS","title":"7.3. Topological Sorting","pathname":"/dsa-java/graphs/topological-sorting","siteSpaceId":"sitesp_3hz5v","description":"This section discusses two algorithms for topological sorting.","breadcrumbs":[{"label":"7. Graphs"}]},{"id":"-MKfYHWEUW7R8ZIvzpW1","title":"7.4. Quiz","pathname":"/dsa-java/graphs/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in disjoint sets.","breadcrumbs":[{"label":"7. Graphs"}]},{"id":"-MBeKvx5f7OIAOu4bAGO","title":"8. Minimum Spanning Trees","pathname":"/dsa-java/minimum-spanning-trees","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses algorithms to find minimum spanning trees in undirected and directed graphs."},{"id":"-MKhBtC-4NukrTiL9J-y","title":"8.1. Abstraction","pathname":"/dsa-java/minimum-spanning-trees/abstraction","siteSpaceId":"sitesp_3hz5v","description":"This section discusses spanning trees in a graph.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MKhBx2DcBKE5QM0xRMm","title":"8.2. Prim's Algorithm","pathname":"/dsa-java/minimum-spanning-trees/prims-algorithm","siteSpaceId":"sitesp_3hz5v","description":"This section discusses Prim's Algorithm that finds a minimum spanning tree in an undirected graph.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MKhC0rKi9ex8MvI5c5y","title":"8.3. Kruskal’s Algorithm","pathname":"/dsa-java/minimum-spanning-trees/kruskals-algorithm","siteSpaceId":"sitesp_3hz5v","description":"This section discusses Kruskal's Algorithm that finds a minimum spanning tree in an undirected graph.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MKhCqCeaVAAC4V8yQhq","title":"8.4. Edmonds' Algorithm","pathname":"/dsa-java/minimum-spanning-trees/edmonds-algorithm","siteSpaceId":"sitesp_3hz5v","description":"This section discusses Chu-Liu-Edmonds' Algorithm that finds a MST in a directed graph.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MKhC8i_ro0eUwvT2d5k","title":"8.5. Quiz","pathname":"/dsa-java/minimum-spanning-trees/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding of minimum spanning trees.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MKhCPkSXwFZ4hULAC8O","title":"8.6. Homework","pathname":"/dsa-java/minimum-spanning-trees/homework","siteSpaceId":"sitesp_3hz5v","description":"This section describes the homework assignment to develop an algorithm to find all minimum spanning tress given an undirected graph.","breadcrumbs":[{"label":"8. Minimum Spanning Trees"}]},{"id":"-MBeL0nhyfJqaGFKmxMQ","title":"9. Network Flow","pathname":"/dsa-java/network-flow","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses the optimization problem called Network Flows that finds the maximum flow given a flow network."},{"id":"-MLJC8ruTc0YXgJIrtge","title":"9.1. Flow Network","pathname":"/dsa-java/network-flow/flow-network","siteSpaceId":"sitesp_3hz5v","description":"This section describes how to implement a flow network.","breadcrumbs":[{"label":"9. Network Flow"}]},{"id":"-MLJI4pTrONPc2mi6QmM","title":"9.2. Ford-Fulkerson Algorithm","pathname":"/dsa-java/network-flow/ford-fulkerson-algorithm","siteSpaceId":"sitesp_3hz5v","description":"This section describes the implementation of Ford-Fulkerson Algorithm","breadcrumbs":[{"label":"9. Network Flow"}]},{"id":"-MLi6VDi7J-d1hDB-2gc","title":"9.3. Simplex Algorithm","pathname":"/dsa-java/network-flow/simplex-algorithm","siteSpaceId":"sitesp_3hz5v","description":"","breadcrumbs":[{"label":"9. Network Flow"}]},{"id":"-MLhr14clkc1UPb2U9w3","title":"9.3. Quiz","pathname":"/dsa-java/network-flow/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in network flow","breadcrumbs":[{"label":"9. Network Flow"}]},{"id":"-MBeL56KWwR_r7Whq2jX","title":"10. Dynamic Programming","pathname":"/dsa-java/dynamic-programming","siteSpaceId":"sitesp_3hz5v","description":"This chapter discusses dynamic programming algorithms in comparison to recursions."},{"id":"-MMR31CGEmJ8kRH72yLa","title":"10.1. Fibonacci Sequence","pathname":"/dsa-java/dynamic-programming/fibonacci-sequence","siteSpaceId":"sitesp_3hz5v","description":"This section discusses recursive, iterative, and dynamic programming ways of generating the Fibonacci sequence.","breadcrumbs":[{"label":"10. Dynamic Programming"}]},{"id":"-MMR7wMGGU-EyMWyM3aq","title":"10.2. Tower of Hanoi","pathname":"/dsa-java/dynamic-programming/tower-of-hanoi","siteSpaceId":"sitesp_3hz5v","description":"This section discusses recursive and dynamic programming ways of solving the Tower of Hanoi problem.","breadcrumbs":[{"label":"10. Dynamic Programming"}]},{"id":"-MMR84OjIyxjT19byOUB","title":"10.3. Longest Common Subsequence","pathname":"/dsa-java/dynamic-programming/longest-common-subsequence","siteSpaceId":"sitesp_3hz5v","description":"This section discusses recursive and dynamic programming ways of finding longest common subsequence.","breadcrumbs":[{"label":"10. Dynamic Programming"}]},{"id":"-MMRA1BSWP31195wq8I-","title":"10.4. Quiz","pathname":"/dsa-java/dynamic-programming/exercises","siteSpaceId":"sitesp_3hz5v","description":"This section provides exercises for better understanding in dynamic programming.","breadcrumbs":[{"label":"10. Dynamic Programming"}]}]}