Tree and Graph Data Structures

بواسطة: 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
الذهاب الي الدورة

Tree and Graph Data Structures

بواسطة: Frontend Masters

  • Frontend Masters
  • مدفوعة
  • الإنجليزية
  • متاح شهادة
  • متاح في أي وقت
  • الجميع
  • N/A
8.1.2PHP Version324msRequest Duration2MBMemory UsageGET ar/الدورات/{slug}Route
    • Booting (205ms)
    • Application (117ms)
    • 1 x Booting (63.49%)
      205.45ms
      1 x Application (36.26%)
      117.35ms
      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
      6 statements were executed6.81ms
      • select * from `courses` where `slug_ar` = 'tree-and-graph-data-structures' limit 1
        5.58ms/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-05 09:17:18' where `id` = 2145
        570μs/app/Http/Controllers/CourseController.php:21corspedia
        Metadata
        Bindings
        • 0. 2025-06-05 09:17:18
        • 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)
        180μ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)
        160μ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
        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` = 2136 limit 1
        170μ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
        GDIPJGaFJIZ0vjPuAXyoYFMGhAzqThUDSEZyfRgW
        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/tree-a...
        _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/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 => "18.220.200.107" ] "cdn-loop" => array:1 [ 0 => "cloudflare; loops=1" ] "x-forwarded-proto" => array:1 [ 0 => "https" ] "x-forwarded-for" => array:1 [ 0 => "18.220.200.107" ] "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 => "94ae937beb8be114-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" => "18.220.200.107" "HTTP_CDN_LOOP" => "cloudflare; loops=1" "HTTP_X_FORWARDED_PROTO" => "https" "HTTP_X_FORWARDED_FOR" => "18.220.200.107" "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" => "94ae937beb8be114-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" => "51396" "REMOTE_ADDR" => "172.70.127.161" "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/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" => 1749115038.3419 "REQUEST_TIME" => 1749115038 ]
        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 => "Thu, 05 Jun 2025 09:17:18 GMT" ] "set-cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImxKVG9aNmpyWkh3akxjNGM1SXRyeHc9PSIsInZhbHVlIjoiYkpvN200cU9hUjNnaTdjL1FGSm9LcFBvdU5Wd2dHK2M4RWV5WElkS3Z3OEJROUxqcW42RUZya0FBTHJiV0d2L1VHQkFrS2MwbFVUdmVSeS9DekdHK29OWjJkbGRGRXBDZXh0azlHUzJlUmhKcUJwRUVlQUVjZlNNR1NvZzJTSGEiLCJtYWMiOiIxZTMwYThiZmVkMWNmZjI1ZmQ0NjM2NTJlNWI3OGNmM2EwZGZjMWZkZGJmYzQxMmI0ZDJkOThhZjVkNTM5NDQ5IiwidGFnIjoiIn0%3D; expires=Thu, 05 Jun 2025 11:17:18 GMT; Max-Age=7200; path=/; samesite=laxXSRF-TOKEN=eyJpdiI6ImxKVG9aNmpyWkh3akxjNGM1SXRyeHc9PSIsInZhbHVlIjoiYkpvN200cU9hUjNnaTdjL1FGSm9LcFBvdU5Wd2dHK2M4RWV5WElkS3Z3OEJROUxqcW42RUZya0FBTHJiV0d2L1VHQkFrS" 1 => "laravel_session=eyJpdiI6IjY1RXZpYUpXUWxZY2thayt0c3Bvbnc9PSIsInZhbHVlIjoiR2dwZW9SbmttVmlLWm9lMC9MR2ZiYVdSQjhGTTJaSjR5OVpJWE5oajJ6OGJWTENTN2xCOVhCa3B3cG1zQ083MWVJWVpSa29BZDc3R0lsMG1PZWVVd2FUT3ZwdmVaK29RWFoxYjZUVkx4aDJleStCMWNpYTlFNnp0cGxKT2t0d0MiLCJtYWMiOiI5MzI0YzliNThhMDUwOTRmNjIyYWJmODdjOGQyYjcxZTFjMmNkYmRhMmEyZjE0ZDdkMTBmNDkwZjk0Mjg4N2JmIiwidGFnIjoiIn0%3D; expires=Thu, 05 Jun 2025 11:17:18 GMT; Max-Age=7200; path=/; httponly; samesite=laxlaravel_session=eyJpdiI6IjY1RXZpYUpXUWxZY2thayt0c3Bvbnc9PSIsInZhbHVlIjoiR2dwZW9SbmttVmlLWm9lMC9MR2ZiYVdSQjhGTTJaSjR5OVpJWE5oajJ6OGJWTENTN2xCOVhCa3B3cG1zQ083MWVJ" ] "Set-Cookie" => array:2 [ 0 => "XSRF-TOKEN=eyJpdiI6ImxKVG9aNmpyWkh3akxjNGM1SXRyeHc9PSIsInZhbHVlIjoiYkpvN200cU9hUjNnaTdjL1FGSm9LcFBvdU5Wd2dHK2M4RWV5WElkS3Z3OEJROUxqcW42RUZya0FBTHJiV0d2L1VHQkFrS2MwbFVUdmVSeS9DekdHK29OWjJkbGRGRXBDZXh0azlHUzJlUmhKcUJwRUVlQUVjZlNNR1NvZzJTSGEiLCJtYWMiOiIxZTMwYThiZmVkMWNmZjI1ZmQ0NjM2NTJlNWI3OGNmM2EwZGZjMWZkZGJmYzQxMmI0ZDJkOThhZjVkNTM5NDQ5IiwidGFnIjoiIn0%3D; expires=Thu, 05-Jun-2025 11:17:18 GMT; path=/XSRF-TOKEN=eyJpdiI6ImxKVG9aNmpyWkh3akxjNGM1SXRyeHc9PSIsInZhbHVlIjoiYkpvN200cU9hUjNnaTdjL1FGSm9LcFBvdU5Wd2dHK2M4RWV5WElkS3Z3OEJROUxqcW42RUZya0FBTHJiV0d2L1VHQkFrS" 1 => "laravel_session=eyJpdiI6IjY1RXZpYUpXUWxZY2thayt0c3Bvbnc9PSIsInZhbHVlIjoiR2dwZW9SbmttVmlLWm9lMC9MR2ZiYVdSQjhGTTJaSjR5OVpJWE5oajJ6OGJWTENTN2xCOVhCa3B3cG1zQ083MWVJWVpSa29BZDc3R0lsMG1PZWVVd2FUT3ZwdmVaK29RWFoxYjZUVkx4aDJleStCMWNpYTlFNnp0cGxKT2t0d0MiLCJtYWMiOiI5MzI0YzliNThhMDUwOTRmNjIyYWJmODdjOGQyYjcxZTFjMmNkYmRhMmEyZjE0ZDdkMTBmNDkwZjk0Mjg4N2JmIiwidGFnIjoiIn0%3D; expires=Thu, 05-Jun-2025 11:17:18 GMT; path=/; httponlylaravel_session=eyJpdiI6IjY1RXZpYUpXUWxZY2thayt0c3Bvbnc9PSIsInZhbHVlIjoiR2dwZW9SbmttVmlLWm9lMC9MR2ZiYVdSQjhGTTJaSjR5OVpJWE5oajJ6OGJWTENTN2xCOVhCa3B3cG1zQ083MWVJ" ] ]
        session_attributes
        0 of 0
        array:5 [ "_token" => "GDIPJGaFJIZ0vjPuAXyoYFMGhAzqThUDSEZyfRgW" "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/tree-and-graph-data-structures" ] "_flash" => array:2 [ "old" => [] "new" => [] ] "PHPDEBUGBAR_STACK_DATA" => [] ]