Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps

بواسطة: edX

Overview

This Data Structures & Algorithms course extends beyond linear data structures in CS1332xI to the nonlinear and hierarchical data structures here in CS1332xII. A short Java review is presented on topics relevant to new data structures covered in this course. The course does require prior knowledge of Java, object-oriented programming and linear data structures. Time complexity is threaded throughout the course within all the nonlinear data structures and algorithms.

You will explore the hierarchical data structure of trees. Trees have important properties such as shape and order which are used to categorize trees into different groups and define their functionality. The course begins by explaining Binary Trees and two subgroups: Binary Search Trees (BSTs) and Binary Heaps. You will program BSTs, their operations and traversal algorithms. BSTs are an important structure when wanting to access information quickly. Heaps approach access differently and prioritize what data is accessed. Heaps also employ the concept of up-heap and down-heap operations not found in other structures.

HashMaps and SkipLists are the last data structures discussed in the course. The HashMap ADT is a collection of key-value pairs. The key-value pairs are stored in an unordered manner based on hash codes and compression functions that translate keys into integers. You will investigate different collision strategies and implement one. SkipLists are a probabilistic data structures where data is placed in the structure based on a randomization procedure.

The course design has several components and is built around modules. A module consists of a series of short (3-5 minute) instructional videos. In between the videos, there are textual frames with additional content information for clarification, as well as video errata dropdown boxes. All modules include an Exploratory Lab that incorporates a Visualization Tool specifically designed for this course. The lab includes discovery questions that lead you towards delving deeper into the efficiency of the data structures and examining the edge cases. This is followed by a set of comprehension questions on topics covered in the module that count for 10% of your grade. The modules end with Java coding assignments which are 60% of your grade. Lastly, you'll complete a course exam, which counts for the remaining 30% of your grade.

Syllabus

Module 0: Introduction and Review

  • Review of important Java principles involved in object-oriented design
  • The Iterator & Iterable design patterns, and the Comparable & Comparator interfaces
  • Basic “Big-Oh” notation and asymptotic analysis

Module 4: Binary Search Tree (BST) Introduction

  • Learn about the non-linear, linked data structure, Trees, and the important submodels: Binary Trees and Binary Search Trees (BST)
  • Acquire a working knowledge of the tree structure, including principles, properties and numerical concepts
  • Examine traversal algorithms for BSTs, the resulting order and the information obtained by each

Module 5: BST Operations & SkipLists

  • Extend understanding of tree structures and their impact on search operations
  • Study and implement efficient procedures for the search, add and remove operations in BSTs
  • Apply the concept of pointer reinforcement restructuring recursion technique to the add and remove operations
  • Investigate the probabilistic data structure, SkipLists, and the implications of randomization on data structures

Module 6: Binary Heaps

  • Explore the Binary Heap tree data structure and its additional property constraints that differentiate it from BSTs
  • Delve into the add and remove operations that require the up-heap and down-heap procedures
  • Explore the efficient bottom-up build heap algorithm

Module 7: HashMaps

  • Study HashMaps designed for efficient storage and retrieval based on the concept of unique keys paired with values
  • Learn about hash functions, hash codes and compression functions while implementing a basic HashMap
  • Investigate data collisions and the strategies to resolve data collisions from external chaining to linear and quadratic probing to double hashing

Taught by

Mary Hudachek-Buswell

Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps
الذهاب الي الدورة

Data Structures & Algorithms II: Binary Trees, Heaps, SkipLists and HashMaps

بواسطة: edX

  • edX
  • مجانية
  • الإنجليزية
  • متاح شهادة
  • أيام محددة
  • intermediate
  • English
8.1.2PHP Version329msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (209ms)
    • Application (119ms)
    • 1 x Booting (63.49%)
      208.90ms
      1 x Application (36.27%)
      119.34ms
      14 templates were rendered
      • public.courses.show (resources/views/public/courses/show.blade.php)3bladefile
        Params
        0
        course
        1
        links
        2
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.courses.partials.details (resources/views/public/courses/partials/details.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.breadcrumbs (resources/views/public/courses/partials/breadcrumbs.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.courses.partials.heading (resources/views/public/courses/partials/heading.blade.php)7bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        classes
      • public.layouts.main (resources/views/public/layouts/main.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.meta (resources/views/public/layouts/partials/meta.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.layouts.partials.navbar (resources/views/public/layouts/partials/navbar.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.links (resources/views/public/auth/profile/partials/links.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.auth.profile.partials.link (resources/views/public/auth/profile/partials/link.blade.php)8bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
        6
        route
        7
        title
      • public.layouts.partials.flash-session (resources/views/public/layouts/partials/flash-session.blade.php)6bladefile
        Params
        0
        __env
        1
        app
        2
        errors
        3
        course
        4
        links
        5
        config
      uri
      GET ar/الدورات/{slug}
      middleware
      web, localize:ar
      controller
      App\Http\Controllers\CourseController@show
      as
      ar.courses.show
      namespace
      prefix
      /ar
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      7 statements were executed4.58ms
      • select * from `courses` where `slug_ar` = 'data-structures-&-algorithms-ii:-binary-trees,-heaps,-skiplists-and-hashmaps' limit 1
        3.23ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. data-structures-&-algorithms-ii:-binary-trees,-heaps,-skiplists-and-hashmaps
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:20
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • update `courses` set `visitors` = `visitors` + 1, `courses`.`updated_at` = '2025-02-22 14:39:09' where `id` = 549
        270μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-02-22 14:39:09
        • 1. 549
        Backtrace
        • 17. /app/Http/Controllers/CourseController.php:21
        • 18. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 19. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 20. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `topic_id`, `slug_en`, `slug_ar` from `subjects` where `subjects`.`id` in (6)
        240μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select `id`, `name_en`, `name_ar`, `slug_en`, `slug_ar` from `topics` where `topics`.`id` in (1)
        190μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 25. /app/Http/Controllers/CourseController.php:23
        • 26. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 27. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 28. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 29. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `institutions` where `institutions`.`id` in (22) and `institutions`.`deleted_at` is null
        310μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `providers` where `providers`.`id` in (1) and `providers`.`deleted_at` is null
        150μs/app/Http/Controllers/CourseController.php:23corspedia
        Metadata
        Backtrace
        • 20. /app/Http/Controllers/CourseController.php:23
        • 21. /vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54
        • 22. /vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:43
        • 23. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:260
        • 24. /vendor/laravel/framework/src/Illuminate/Routing/Route.php:205
      • select * from `html_files` where `html_files`.`id` = 543 limit 1
        190μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 543
        Backtrace
        • 21. /app/Models/Course.php:84
        • 28. view::public.courses.show:29
        • 30. /vendor/laravel/framework/src/Illuminate/Filesystem/Filesystem.php:125
        • 31. /vendor/laravel/framework/src/Illuminate/View/Engines/PhpEngine.php:58
        • 32. /vendor/laravel/framework/src/Illuminate/View/Engines/CompilerEngine.php:72
      App\Models\HtmlFile
      1
      App\Models\Provider
      1
      App\Models\Institution
      1
      App\Models\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        Y71RYXfiHts3gsv34bbdUSTiNFjegjDjpiaw6NUz
        locale
        ar
        _previous
        array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/data-s...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/data-structures-&-algorithms-ii:-binary-trees,-heaps,-skiplists-and-hashmaps
        status_code
        200
        
        status_text
        OK
        format
        html
        content_type
        text/html; charset=UTF-8
        request_query
        []
        
        request_request
        []
        
        request_headers
        0 of 0
        array:24 [ "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "priority" => array:1 [ 0 => "u=0, i" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "cf-connecting-ip" => array:1 [ 0 => "18.219.125.103" ] "accept" => array:1 [ 0 => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "cf-ipcountry" => array:1 [ 0 => "US" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "x-forwarded-for" => array:1 [ 0 => "18.219.125.103" ] "cf-ray" => array:1 [ 0 => "915fb9504de686da-ORD" ] "host" => array:1 [ 0 => "www.corspedia.com" ] "content-length" => array:1 [ 0 => "" ] "content-type" => array:1 [ 0 => "" ] ]
        request_server
        0 of 0
        array:50 [ "USER" => "www-data" "HOME" => "/var/www" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""HeadlessChrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_PRIORITY" => "u=0, i" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_CF_CONNECTING_IP" => "18.219.125.103" "HTTP_ACCEPT" => "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7" "HTTP_SEC_FETCH_SITE" => "none" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_CF_IPCOUNTRY" => "US" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_X_FORWARDED_FOR" => "18.219.125.103" "HTTP_CF_RAY" => "915fb9504de686da-ORD" "HTTP_HOST" => "www.corspedia.com" "REDIRECT_STATUS" => "200" "SERVER_NAME" => "corspedia.com" "SERVER_PORT" => "443" "SERVER_ADDR" => "141.95.147.152" "REMOTE_USER" => "" "REMOTE_PORT" => "27260" "REMOTE_ADDR" => "172.70.131.153" "SERVER_SOFTWARE" => "nginx/1.18.0" "GATEWAY_INTERFACE" => "CGI/1.1" "HTTPS" => "on" "REQUEST_SCHEME" => "https" "SERVER_PROTOCOL" => "HTTP/2.0" "DOCUMENT_ROOT" => "/var/www/corspedia/public" "DOCUMENT_URI" => "/index.php" "REQUEST_URI" => "/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/data-structures-&-algorithms-ii:-binary-trees,-heaps,-skiplists-and-hashmaps" "SCRIPT_NAME" => "/index.php" "CONTENT_LENGTH" => "" "CONTENT_TYPE" => "" "REQUEST_METHOD" => "GET" "QUERY_STRING" => "" "SCRIPT_FILENAME" => "/var/www/corspedia/public/index.php" "PATH_INFO" => "" "FCGI_ROLE" => "RESPONDER" "PHP_SELF" => "/index.php" "REQUEST_TIME_FLOAT" => 1740235149.1011 "REQUEST_TIME" => 1740235149 ]
        request_cookies
        []
        
        response_headers
        0 of 0
        array:5 [ "content-type" => array:1 [ 0 => "text/html; charset=UTF-8" ] "cache-control" => array:1 [ 0 => "no-cache, private" ] "date" => array:1 [ 0 => "Sat, 22 Feb 2025 14:39:09 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjJGSHdrYlVRMlBKWTZQeklMY1FIRFE9PSIsInZhbHVlIjoiVzRZcXVCNE1KTzVGSXUwSUVxamZOcU00UjduTjVQZlgwTmRTS01Td1gxeEl0cEFxcUpXY29jaThBS1dCcG1yajV4K01FelZhTjZCK1pDcU9EV2NHK1FtRUd6T0VOTWd3L3dYbGgrYlUzYWpmRXRZenp3MXkyU1RsL2xWTjdYRXAiLCJtYWMiOiJjNTNmNWFkN2NiMThkZTVhZTNmMTI0NjBkY2JhYmI3OGY0ZWQwYjBkYzI5ZDE0ZGUxM2QyYWM2YmE1MGRkOTc3IiwidGFnIjoiIn0%3D; expires=Sat, 22 Feb 2025 16:39:09 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6IjJGSHdrYlVRMlBKWTZQeklMY1FIRFE9PSIsInZhbHVlIjoiVzRZcXVCNE1KTzVGSXUwSUVxamZOcU00UjduTjVQZlgwTmRTS01Td1gxeEl0cEFxcUpXY29jaThBS1dCcG1yajV4K01Fe" 1 => "laravel_session=eyJpdiI6Im84eXNRRFV1NHRKbWNaRWxEbENrckE9PSIsInZhbHVlIjoiVHJ6cG5VaWFvMnl3WUxFTk1ORTZPWmZHdW1QaE5Dd3RRV0Y5Tjl4U21OWi83QTRSNEFzVExZRlg0RDU4a29RanNkREg3OUhGYjYydUdEUkVjcThTZGFhcjEwZjlQSFY2cEZ0YWRPelVkNVpKUUtlc2pSMWg3Ty80Wmk1b3I5cHgiLCJtYWMiOiJiMzZlYTM5Yzg2NzM0N2VhYTYwYzViYzYzOTU1MGEyZGJkMDgwYjMyZmJkNzg1ZDIwMTYzY2Y0NzQ5YzU4MGNkIiwidGFnIjoiIn0%3D; expires=Sat, 22 Feb 2025 16:39:09 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Im84eXNRRFV1NHRKbWNaRWxEbENrckE9PSIsInZhbHVlIjoiVHJ6cG5VaWFvMnl3WUxFTk1ORTZPWmZHdW1QaE5Dd3RRV0Y5Tjl4U21OWi83QTRSNEFzVExZRlg0RDU4a29RanNk" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6IjJGSHdrYlVRMlBKWTZQeklMY1FIRFE9PSIsInZhbHVlIjoiVzRZcXVCNE1KTzVGSXUwSUVxamZOcU00UjduTjVQZlgwTmRTS01Td1gxeEl0cEFxcUpXY29jaThBS1dCcG1yajV4K01FelZhTjZCK1pDcU9EV2NHK1FtRUd6T0VOTWd3L3dYbGgrYlUzYWpmRXRZenp3MXkyU1RsL2xWTjdYRXAiLCJtYWMiOiJjNTNmNWFkN2NiMThkZTVhZTNmMTI0NjBkY2JhYmI3OGY0ZWQwYjBkYzI5ZDE0ZGUxM2QyYWM2YmE1MGRkOTc3IiwidGFnIjoiIn0%3D; expires=Sat, 22-Feb-2025 16:39:09 GMT; path=/XSRF-TOKEN=eyJpdiI6IjJGSHdrYlVRMlBKWTZQeklMY1FIRFE9PSIsInZhbHVlIjoiVzRZcXVCNE1KTzVGSXUwSUVxamZOcU00UjduTjVQZlgwTmRTS01Td1gxeEl0cEFxcUpXY29jaThBS1dCcG1yajV4K01Fe" 1 => "laravel_session=eyJpdiI6Im84eXNRRFV1NHRKbWNaRWxEbENrckE9PSIsInZhbHVlIjoiVHJ6cG5VaWFvMnl3WUxFTk1ORTZPWmZHdW1QaE5Dd3RRV0Y5Tjl4U21OWi83QTRSNEFzVExZRlg0RDU4a29RanNkREg3OUhGYjYydUdEUkVjcThTZGFhcjEwZjlQSFY2cEZ0YWRPelVkNVpKUUtlc2pSMWg3Ty80Wmk1b3I5cHgiLCJtYWMiOiJiMzZlYTM5Yzg2NzM0N2VhYTYwYzViYzYzOTU1MGEyZGJkMDgwYjMyZmJkNzg1ZDIwMTYzY2Y0NzQ5YzU4MGNkIiwidGFnIjoiIn0%3D; expires=Sat, 22-Feb-2025 16:39:09 GMT; path=/; httponlylaravel_session=eyJpdiI6Im84eXNRRFV1NHRKbWNaRWxEbENrckE9PSIsInZhbHVlIjoiVHJ6cG5VaWFvMnl3WUxFTk1ORTZPWmZHdW1QaE5Dd3RRV0Y5Tjl4U21OWi83QTRSNEFzVExZRlg0RDU4a29RanNk" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "Y71RYXfiHts3gsv34bbdUSTiNFjegjDjpiaw6NUz" "locale" => "ar" "_previous" => array:1 [ "url" => "https://www.corspedia.com/ar/%D8%A7%D9%84%D8%AF%D9%88%D8%B1%D8%A7%D8%AA/data-structures-&-algorithms-ii:-binary-trees,-heaps,-skiplists-and-hashmaps" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]