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 Version1.46sRequest Duration2MBMemory UsageGET en/courses/{slug}Route
    • Booting (910ms)
    • Application (541ms)
    • 1 x Booting (62.53%)
      909.98ms
      1 x Application (37.2%)
      541.45ms
      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 executed16.69ms
      • select * from `courses` where `slug_en` = 'tree-and-graph-data-structures' limit 1
        14.3ms/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-07-08 23:24:46' where `id` = 2145
        1.18ms/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-07-08 23:24:46
        • 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)
        300μ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)
        250μ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
        300μ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
        360μ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
        stY7sBalnVziBuRmWo5ZBwypeX0Bse24OtDWcytY
        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.216.175" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "216.73.216.175" ] "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 => "95c356401a28620b-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.175" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "216.73.216.175" "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" => "95c356401a28620b-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" => "19730" "REMOTE_ADDR" => "172.70.194.130" "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" => 1752017085.7259 "REQUEST_TIME" => 1752017085 ]
        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 => "Tue, 08 Jul 2025 23:24:46 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ind5cGZDNE9BWFZFdVlRYU9vTWVDYkE9PSIsInZhbHVlIjoiNlpEWW5ITG4rbzJsWVg1cGUyOUxoUVA5dmdjNjhOWitwcjFVM1FQcUVHSjRUWU5mOFJ2eVdhNkFSMUhHTFJvS2xWdFh0dklKMkVhT1k1QXQxWWtkYlVLR1B2NWRZSjJhUlBIY3lkNHZyeTJzV3YwQUxtMmVCUm90YVF2cnJnQjkiLCJtYWMiOiJmNjlhNGYyMDU1YWQ5MTc1OGM2MGMzM2QxNTMzODAyNDU0NDFhZWI2NTJkNzlmYjBkMTUzYTBjOTEzOGFlODNkIiwidGFnIjoiIn0%3D; expires=Wed, 09 Jul 2025 01:24:47 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6Ind5cGZDNE9BWFZFdVlRYU9vTWVDYkE9PSIsInZhbHVlIjoiNlpEWW5ITG4rbzJsWVg1cGUyOUxoUVA5dmdjNjhOWitwcjFVM1FQcUVHSjRUWU5mOFJ2eVdhNkFSMUhHTFJvS2xWdFh0d" 1 => "laravel_session=eyJpdiI6Ik5ScHFWRWdQeFhLNHZRZnBnQUptRkE9PSIsInZhbHVlIjoiVTl1Q0F5QStLT24rR056VnNRSFBZY2tJYkQyazZxUVFVZUtMTHBuMWZEbkVlQkFTaUVLTkE3NldZY3lhWXBXRHVTZHBpakNJUmo4c09SeW5xMGRWdEtDYVM3L2FNWXRXb3M1MXB3RFZCQWY5bnI4TjJhbXg2SEVTYzY1dDNYZkkiLCJtYWMiOiI1NzAzNGQyNTBkMDc0M2FiZTZlMTU1MjdlMTIzMzI1MTI3Mjc4ZmQ2ZWYzM2Q3NGFhYWFhYTU0N2E4OTA4MjI4IiwidGFnIjoiIn0%3D; expires=Wed, 09 Jul 2025 01:24:47 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6Ik5ScHFWRWdQeFhLNHZRZnBnQUptRkE9PSIsInZhbHVlIjoiVTl1Q0F5QStLT24rR056VnNRSFBZY2tJYkQyazZxUVFVZUtMTHBuMWZEbkVlQkFTaUVLTkE3NldZY3lhWXBXRHVT" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6Ind5cGZDNE9BWFZFdVlRYU9vTWVDYkE9PSIsInZhbHVlIjoiNlpEWW5ITG4rbzJsWVg1cGUyOUxoUVA5dmdjNjhOWitwcjFVM1FQcUVHSjRUWU5mOFJ2eVdhNkFSMUhHTFJvS2xWdFh0dklKMkVhT1k1QXQxWWtkYlVLR1B2NWRZSjJhUlBIY3lkNHZyeTJzV3YwQUxtMmVCUm90YVF2cnJnQjkiLCJtYWMiOiJmNjlhNGYyMDU1YWQ5MTc1OGM2MGMzM2QxNTMzODAyNDU0NDFhZWI2NTJkNzlmYjBkMTUzYTBjOTEzOGFlODNkIiwidGFnIjoiIn0%3D; expires=Wed, 09-Jul-2025 01:24:47 GMT; path=/XSRF-TOKEN=eyJpdiI6Ind5cGZDNE9BWFZFdVlRYU9vTWVDYkE9PSIsInZhbHVlIjoiNlpEWW5ITG4rbzJsWVg1cGUyOUxoUVA5dmdjNjhOWitwcjFVM1FQcUVHSjRUWU5mOFJ2eVdhNkFSMUhHTFJvS2xWdFh0d" 1 => "laravel_session=eyJpdiI6Ik5ScHFWRWdQeFhLNHZRZnBnQUptRkE9PSIsInZhbHVlIjoiVTl1Q0F5QStLT24rR056VnNRSFBZY2tJYkQyazZxUVFVZUtMTHBuMWZEbkVlQkFTaUVLTkE3NldZY3lhWXBXRHVTZHBpakNJUmo4c09SeW5xMGRWdEtDYVM3L2FNWXRXb3M1MXB3RFZCQWY5bnI4TjJhbXg2SEVTYzY1dDNYZkkiLCJtYWMiOiI1NzAzNGQyNTBkMDc0M2FiZTZlMTU1MjdlMTIzMzI1MTI3Mjc4ZmQ2ZWYzM2Q3NGFhYWFhYTU0N2E4OTA4MjI4IiwidGFnIjoiIn0%3D; expires=Wed, 09-Jul-2025 01:24:47 GMT; path=/; httponlylaravel_session=eyJpdiI6Ik5ScHFWRWdQeFhLNHZRZnBnQUptRkE9PSIsInZhbHVlIjoiVTl1Q0F5QStLT24rR056VnNRSFBZY2tJYkQyazZxUVFVZUtMTHBuMWZEbkVlQkFTaUVLTkE3NldZY3lhWXBXRHVT" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "stY7sBalnVziBuRmWo5ZBwypeX0Bse24OtDWcytY" "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" => [] ]