Introduction to Non-linear Data Structures in Swift

Brought by: Codecademy

Overview

Learn about more complex data structures and implement them in the Swift programming language.

Data structures are a fundamental component of computer science. By understanding how these building blocks work, you'll be better able to build software and appreciate why API design decisions are made.



### Take-Away Skills

This course teaches you how to build complex data structures like graphs, heaps, and binary search trees from scratch. You'll also learn how to use these structures to access, add and remove information.

Syllabus

  • Nonlinear Data Structures in Swift: Get a general overview of nonlinear data structures in Swift and what's to come in this course!
    • Article: Nonlinear Data Structures in Swift
  • Trees: Learn how to build a tree in Swift.
    • Lesson: Trees: Conceptual
    • Quiz: Trees: Conceptual
    • Lesson: Trees: Swift
    • Quiz: Trees: Swift Quiz
  • Heaps: Learn how to build a heap in Swift.
    • Lesson: Heaps: Conceptual
    • Quiz: Heaps: Conceptual
    • Lesson: Heaps: Swift
    • Quiz: Heaps: Swift
  • Binary Search Trees: Learn how to build a binary search tree in Swift.
    • Lesson: Binary Search Trees: Swift
    • Quiz: Binary Search Tree: Swift
  • Graphs: Learn how to build graphs in Swift.
    • Lesson: Graphs: Conceptual
    • Quiz: Graphs: Conceptual
    • Lesson: Graphs: Swift
    • Quiz: Graphs: Swift
  • Graph Search: Learn how to implement a graph search algorithm in Swift.
    • Lesson: Graph Search: Swift
    • Quiz: Graph Search: Quiz
Introduction to Non-linear Data Structures in Swift
Go to course

Introduction to Non-linear Data Structures in Swift

Brought by: Codecademy

  • Codecademy
  • Free
  • English
  • Certificate Available
  • Available at any time
  • advanced
  • N/A
8.1.2PHP Version940msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (581ms)
    • Application (356ms)
    • 1 x Booting (61.83%)
      581.18ms
      1 x Application (37.92%)
      356.50ms
      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 en/courses/{slug}
      middleware
      web, localize:en
      controller
      App\Http\Controllers\CourseController@show
      as
      en.courses.show
      namespace
      prefix
      /en
      where
      file
      app/Http/Controllers/CourseController.php:17-35
      6 statements were executed15.19ms
      • select * from `courses` where `slug_en` = 'introduction-to-non-linear-data-structures-in-swift' limit 1
        13.67ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. introduction-to-non-linear-data-structures-in-swift
        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-07-04 20:05:12' where `id` = 3297
        540μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-04 20:05:12
        • 1. 3297
        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)
        210μ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 `providers` where `providers`.`id` in (53) and `providers`.`deleted_at` is null
        230μ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` = 3288 limit 1
        300μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 3288
        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\Topic
      1
      App\Models\Subject
      1
      App\Models\Course
      1
        _token
        2M1geYIuvOoOtL330uqpfMmXd7vuaIbJqqs8QKI1
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/introduction-to-non-linear-data-structure...
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/introduction-to-non-linear-data-structures-in-swift
        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 [ "cf-ipcountry" => array:1 [ 0 => "US" ] "cf-connecting-ip" => array:1 [ 0 => "216.73.216.191" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.191" ] "sec-fetch-site" => array:1 [ 0 => "none" ] "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" ] "user-agent" => array:1 [ 0 => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" ] "upgrade-insecure-requests" => array:1 [ 0 => "1" ] "sec-ch-ua-platform" => array:1 [ 0 => ""Windows"" ] "sec-ch-ua-mobile" => array:1 [ 0 => "?0" ] "sec-ch-ua" => array:1 [ 0 => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" ] "cache-control" => array:1 [ 0 => "no-cache" ] "pragma" => array:1 [ 0 => "no-cache" ] "sec-fetch-dest" => array:1 [ 0 => "document" ] "cf-ray" => array:1 [ 0 => "95a13c6bcccfcd80-ORD" ] "accept-encoding" => array:1 [ 0 => "gzip, br" ] "priority" => array:1 [ 0 => "u=0, i" ] "sec-fetch-user" => array:1 [ 0 => "?1" ] "sec-fetch-mode" => array:1 [ 0 => "navigate" ] "cf-visitor" => array:1 [ 0 => "{"scheme":"https"}" ] "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_CF_IPCOUNTRY" => "US" "HTTP_CF_CONNECTING_IP" => "216.73.216.191" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.191" "HTTP_SEC_FETCH_SITE" => "none" "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_USER_AGENT" => "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)" "HTTP_UPGRADE_INSECURE_REQUESTS" => "1" "HTTP_SEC_CH_UA_PLATFORM" => ""Windows"" "HTTP_SEC_CH_UA_MOBILE" => "?0" "HTTP_SEC_CH_UA" => ""Chromium";v="130", "HeadlessChrome";v="130", "Not?A_Brand";v="99"" "HTTP_CACHE_CONTROL" => "no-cache" "HTTP_PRAGMA" => "no-cache" "HTTP_SEC_FETCH_DEST" => "document" "HTTP_CF_RAY" => "95a13c6bcccfcd80-ORD" "HTTP_ACCEPT_ENCODING" => "gzip, br" "HTTP_PRIORITY" => "u=0, i" "HTTP_SEC_FETCH_USER" => "?1" "HTTP_SEC_FETCH_MODE" => "navigate" "HTTP_CF_VISITOR" => "{"scheme":"https"}" "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" => "39180" "REMOTE_ADDR" => "172.69.17.123" "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" => "/en/courses/introduction-to-non-linear-data-structures-in-swift" "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" => 1751659511.8985 "REQUEST_TIME" => 1751659511 ]
        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 => "Fri, 04 Jul 2025 20:05:12 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ilg2LzBZWHRsR25mZ0l2aStIU1E3SHc9PSIsInZhbHVlIjoiRFZxdi9QNFFSVzNLRldnTnNCbWhmL1lwS0hLQ0hNNGxzMHRuUW5KK0pXSGZnOFNzVHhRY3RhbWE0ZHBGYVM5am9PQ3QvQUtuUWZYa3FRbHZkU1dUMDRRSzdJYmVPNE04cFIwS05ZUjNER3Y2aE54UGlXZGFWaTdwaldiVTd0WS8iLCJtYWMiOiI1MThhNWJmNTVhM2E3MDU3Mzc4YWQ0Zjk3MmI1YzIzYzgzMDQ4ZjllM2RkNzVhYjljNjc5YTY1ZTVjNzFlZjZlIiwidGFnIjoiIn0%3D; expires=Fri, 04 Jul 2025 22:05:12 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ilg2LzBZWHRsR25mZ0l2aStIU1E3SHc9PSIsInZhbHVlIjoiRFZxdi9QNFFSVzNLRldnTnNCbWhmL1lwS0hLQ0hNNGxzMHRuUW5KK0pXSGZnOFNzVHhRY3RhbWE0ZHBGYVM5am9PQ3QvQ" 1 => "laravel_session=eyJpdiI6Ik5VOU1sZ05JVkhhajhVYno5MENxWkE9PSIsInZhbHVlIjoiVXlyVmdJVlc2TjRBVXRySmtNK1IxZUJGRDZyQVRGNEVMWTBreUIrVnVaa0l3R1JjZVVuRHZaUnRiV2RjTHprdENBenl3WVYvWFNvTjMveEc0ZXBoeHA5dUwrdVlJZWFLaGV0ZDhaWmVCUUZNcXRkck93VmppN1F3RDlvcWFBVHkiLCJtYWMiOiJlYmZmZTU2OGMwNjljOGJmZDM1ZDdhNjRjYTMwZjk1OWNlYzgyOTNmYWU2ZDEzYTk2MjQ1YjcxOGM0OGQwNGEzIiwidGFnIjoiIn0%3D; expires=Fri, 04 Jul 2025 22:05:12 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik5VOU1sZ05JVkhhajhVYno5MENxWkE9PSIsInZhbHVlIjoiVXlyVmdJVlc2TjRBVXRySmtNK1IxZUJGRDZyQVRGNEVMWTBreUIrVnVaa0l3R1JjZVVuRHZaUnRiV2RjTHprdENB" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ilg2LzBZWHRsR25mZ0l2aStIU1E3SHc9PSIsInZhbHVlIjoiRFZxdi9QNFFSVzNLRldnTnNCbWhmL1lwS0hLQ0hNNGxzMHRuUW5KK0pXSGZnOFNzVHhRY3RhbWE0ZHBGYVM5am9PQ3QvQUtuUWZYa3FRbHZkU1dUMDRRSzdJYmVPNE04cFIwS05ZUjNER3Y2aE54UGlXZGFWaTdwaldiVTd0WS8iLCJtYWMiOiI1MThhNWJmNTVhM2E3MDU3Mzc4YWQ0Zjk3MmI1YzIzYzgzMDQ4ZjllM2RkNzVhYjljNjc5YTY1ZTVjNzFlZjZlIiwidGFnIjoiIn0%3D; expires=Fri, 04-Jul-2025 22:05:12 GMT; path=/XSRF-TOKEN=eyJpdiI6Ilg2LzBZWHRsR25mZ0l2aStIU1E3SHc9PSIsInZhbHVlIjoiRFZxdi9QNFFSVzNLRldnTnNCbWhmL1lwS0hLQ0hNNGxzMHRuUW5KK0pXSGZnOFNzVHhRY3RhbWE0ZHBGYVM5am9PQ3QvQ" 1 => "laravel_session=eyJpdiI6Ik5VOU1sZ05JVkhhajhVYno5MENxWkE9PSIsInZhbHVlIjoiVXlyVmdJVlc2TjRBVXRySmtNK1IxZUJGRDZyQVRGNEVMWTBreUIrVnVaa0l3R1JjZVVuRHZaUnRiV2RjTHprdENBenl3WVYvWFNvTjMveEc0ZXBoeHA5dUwrdVlJZWFLaGV0ZDhaWmVCUUZNcXRkck93VmppN1F3RDlvcWFBVHkiLCJtYWMiOiJlYmZmZTU2OGMwNjljOGJmZDM1ZDdhNjRjYTMwZjk1OWNlYzgyOTNmYWU2ZDEzYTk2MjQ1YjcxOGM0OGQwNGEzIiwidGFnIjoiIn0%3D; expires=Fri, 04-Jul-2025 22:05:12 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik5VOU1sZ05JVkhhajhVYno5MENxWkE9PSIsInZhbHVlIjoiVXlyVmdJVlc2TjRBVXRySmtNK1IxZUJGRDZyQVRGNEVMWTBreUIrVnVaa0l3R1JjZVVuRHZaUnRiV2RjTHprdENB" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "2M1geYIuvOoOtL330uqpfMmXd7vuaIbJqqs8QKI1" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/introduction-to-non-linear-data-structures-in-swift" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]