Tree and Graph Data Structures

Brought by: Frontend Masters

Overview

Learn the implementation details of tree and graph data structures, interview questions involving them, and the algorithms to solve them. This course builds on Bianca’s Practical Algorithms and Data Structures for Interviews courses. Unlike arrays, trees and graphs are non-linear. This allows for modeling things such as recommendation algorithms and social networks.

Syllabus

  • Course Overview
  • Arrays & Linked Lists Review
  • Stacks & Queues Review
  • Linear vs Non-Linear Data Structures
  • Modeling a Chatbot
  • Introduction to Trees
  • Linear vs Non-Linear Data Modeling
  • Exploring Data Modeling
  • Family Trees
  • Tree insert & remove Exercise
  • Tree insert Solution
  • Tree remove Solution
  • Chatbot Recommendations
  • Coding a Tree
  • Tree Traversal
  • Traversing One Tree
  • Traversing Nested Trees
  • Binary Tree Traversal Exercise
  • Binary Tree traverse Solution
  • Binary Tree contains Solution
  • Binary Tree contains Walkthrough
  • Count Recommendations
  • Tree Methods Time Complexity
  • Tree Traversal Order
  • Drawing a Graph
  • Adjacency Matrix
  • Adjacency List
  • Matrix vs List Comparison
  • Graph Exercise
  • Graph Solution
  • Search & Personal Recommendations
  • Depth First Search
  • Depth First Search Exercise
  • Depth First Search Solution
  • Breadth First Search
  • Breadth First Search Exercise
  • Breadth First Search Solution
  • Depth-First & Breadth-First Search Usage
  • Directed Graphs
  • Binary Search
  • Binary Search Trees
  • Fill the Tree Activity
  • insert Node
  • Binary Search Exercise
  • Binary Search Solution
  • Binary Search Time Complexity
  • Wrapping Up

Taught by

Bianca Gandolfo

Tree and Graph Data Structures
Go to course

Tree and Graph Data Structures

Brought by: Frontend Masters

  • Frontend Masters
  • Paid
  • English
  • Certificate Not Available
  • Available at any time
  • All
  • N/A
8.1.2PHP Version969msRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (632ms)
    • Application (334ms)
    • 1 x Booting (65.26%)
      632.05ms
      1 x Application (34.49%)
      334.10ms
      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 executed10.57ms
      • select * from `courses` where `slug_en` = 'tree-and-graph-data-structures' limit 1
        8.75ms/app/Http/Controllers/CourseController.php:20corspedia
        Metadata
        Bindings
        • 0. tree-and-graph-data-structures
        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-06-18 15:54:01' where `id` = 2145
        920μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-18 15:54:01
        • 1. 2145
        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)
        250μ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)
        180μ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 (41) and `providers`.`deleted_at` is null
        200μ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` = 2136 limit 1
        270μs/app/Models/Course.php:84corspedia
        Metadata
        Bindings
        • 0. 2136
        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
        f7BfwCdzCF2XSMhQ1DDxNWIe2evuzheinT5nD4Z5
        locale
        en
        _previous
        array:1 [ "url" => "https://www.corspedia.com/en/courses/tree-and-graph-data-structures" ]
        _flash
        array:2 [ "old" => [] "new" => [] ]
        PHPDEBUGBAR_STACK_DATA
        []
        path_info
        /en/courses/tree-and-graph-data-structures
        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.217.2" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.217.2" ] "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 => "951bf676fd0be7f5-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.217.2" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.217.2" "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" => "951bf676fd0be7f5-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" => "60086" "REMOTE_ADDR" => "108.162.216.69" "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/tree-and-graph-data-structures" "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" => 1750262040.4083 "REQUEST_TIME" => 1750262040 ]
        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 => "Wed, 18 Jun 2025 15:54:01 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InFWblQ3UlhYRzk2eUU5SW9rSVVseEE9PSIsInZhbHVlIjoiV1VmV0Z2WjdZR2FyWlN5WDI5dU5pU2t0Zyt3SHFncFlHYTNnU0JjaUtKNDhmVTNtaTVzM3V3ZXV0MnpoY2cxOURMaGVlTkNrdGpFQ0t4NHF3cmV2YVJ0Q2I0V3pNb05TUTRVeHIraG03L2tFV3IzWUl3M2ZvMjFsM2VkclJkcHAiLCJtYWMiOiIyYTA5OTc2NzFhMWI0MTc5ZTMyNzBlYThiMjFhMTdlMDUyNmIyZDIxNTMzMjVjOWZkZTg3Zjc1Njc5MGIyMmRiIiwidGFnIjoiIn0%3D; expires=Wed, 18 Jun 2025 17:54:01 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6InFWblQ3UlhYRzk2eUU5SW9rSVVseEE9PSIsInZhbHVlIjoiV1VmV0Z2WjdZR2FyWlN5WDI5dU5pU2t0Zyt3SHFncFlHYTNnU0JjaUtKNDhmVTNtaTVzM3V3ZXV0MnpoY2cxOURMaGVlT" 1 => "laravel_session=eyJpdiI6ImVvcm9iRld2SVkySW1SK2Z1SjUvWHc9PSIsInZhbHVlIjoiemsvVHZpYmRGNHVuUWJnWXN6bW4xNUNFT09yeXZacFQrSGdrc0NBVk8zbnh6YkMrZEtHbUxEUGkxYnBYRys3S1plMWJXbmFOd0kyYlJqTFBVKzhSckV4V2tBeDNMbDJBZDZscGdUM1EzZ1BFK04rYUFWZXdQd1dyZlFBRHNjNHUiLCJtYWMiOiIzMTkxOTlhZjFkOWI1ODkyMGFiZTUxZTQ1YTYxMDY4NzcwODA5ZDE4OTFmYzNjZGMxNDJkMjFjN2MxMGFlNzg3IiwidGFnIjoiIn0%3D; expires=Wed, 18 Jun 2025 17:54:01 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6ImVvcm9iRld2SVkySW1SK2Z1SjUvWHc9PSIsInZhbHVlIjoiemsvVHZpYmRGNHVuUWJnWXN6bW4xNUNFT09yeXZacFQrSGdrc0NBVk8zbnh6YkMrZEtHbUxEUGkxYnBYRys3S1pl" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6InFWblQ3UlhYRzk2eUU5SW9rSVVseEE9PSIsInZhbHVlIjoiV1VmV0Z2WjdZR2FyWlN5WDI5dU5pU2t0Zyt3SHFncFlHYTNnU0JjaUtKNDhmVTNtaTVzM3V3ZXV0MnpoY2cxOURMaGVlTkNrdGpFQ0t4NHF3cmV2YVJ0Q2I0V3pNb05TUTRVeHIraG03L2tFV3IzWUl3M2ZvMjFsM2VkclJkcHAiLCJtYWMiOiIyYTA5OTc2NzFhMWI0MTc5ZTMyNzBlYThiMjFhMTdlMDUyNmIyZDIxNTMzMjVjOWZkZTg3Zjc1Njc5MGIyMmRiIiwidGFnIjoiIn0%3D; expires=Wed, 18-Jun-2025 17:54:01 GMT; path=/XSRF-TOKEN=eyJpdiI6InFWblQ3UlhYRzk2eUU5SW9rSVVseEE9PSIsInZhbHVlIjoiV1VmV0Z2WjdZR2FyWlN5WDI5dU5pU2t0Zyt3SHFncFlHYTNnU0JjaUtKNDhmVTNtaTVzM3V3ZXV0MnpoY2cxOURMaGVlT" 1 => "laravel_session=eyJpdiI6ImVvcm9iRld2SVkySW1SK2Z1SjUvWHc9PSIsInZhbHVlIjoiemsvVHZpYmRGNHVuUWJnWXN6bW4xNUNFT09yeXZacFQrSGdrc0NBVk8zbnh6YkMrZEtHbUxEUGkxYnBYRys3S1plMWJXbmFOd0kyYlJqTFBVKzhSckV4V2tBeDNMbDJBZDZscGdUM1EzZ1BFK04rYUFWZXdQd1dyZlFBRHNjNHUiLCJtYWMiOiIzMTkxOTlhZjFkOWI1ODkyMGFiZTUxZTQ1YTYxMDY4NzcwODA5ZDE4OTFmYzNjZGMxNDJkMjFjN2MxMGFlNzg3IiwidGFnIjoiIn0%3D; expires=Wed, 18-Jun-2025 17:54:01 GMT; path=/; httponlylaravel_session=eyJpdiI6ImVvcm9iRld2SVkySW1SK2Z1SjUvWHc9PSIsInZhbHVlIjoiemsvVHZpYmRGNHVuUWJnWXN6bW4xNUNFT09yeXZacFQrSGdrc0NBVk8zbnh6YkMrZEtHbUxEUGkxYnBYRys3S1pl" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "f7BfwCdzCF2XSMhQ1DDxNWIe2evuzheinT5nD4Z5" "locale" => "en" "_previous" => array:1 [ "url" => "https://www.corspedia.com/en/courses/tree-and-graph-data-structures" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]