本文へスキップ
購入者向け43 / 67 ページ

二分木(基礎)BFS, DFS

LeetCode 練習問題集

問題難易度重要度テクニック
Binary Tree Level Order Traversal★★Breadth First Search, BFS(幅優先探索)
Maximum Level Sum of a Binary Tree★★★Breadth First Search, BFS(幅優先探索)
Binary Tree Right Side View★★★Breadth First Search, BFS(幅優先探索)
Count Good Nodes in Binary Tree★★★Depth First Search, DFS(深さ優先探索)
Diameter of Binary Tree★★★Depth First Search, DFS(深さ優先探索)
Maximum Depth of Binary Tree★★Depth First Search, DFS(深さ優先探索)
Invert Binary Tree★★Depth First Search, DFS(深さ優先探索)
Balanced Binary Tree★★Depth First Search, DFS(深さ優先探索)
Same Tree★★Depth First Search, DFS(深さ優先探索)
Subtree of Another Tree★★Depth First Search, DFS(深さ優先探索)
Lowest Common Ancestor of a Binary Search Tree★★★Depth First Search, DFS(深さ優先探索)
Binary Tree Maximum Path Sum★★★★Depth First Search, DFS(深さ優先探索)

事前に必要な知識

  • 配列、キュー、スタック
  • 再帰関数 本章では Breadth First Search, BFS(幅優先探索)Depth First Search, DFS(深さ優先探索) の2つの探索について説明します。先に探索(Search)とは何をすることかついて説明します。簡単にいうとグラフ上のノードとエッジを通りながらグラフの構造を把握していくことです。二分木の問題では一般的にノードのクラス(構造体)は以下のコードのように事前に定義されています。そして問題では基本的に根のノードしか与えられません。 (...はEllipsisと呼ばれる省略を表すPythonの組み込み定数です。公式ドキュメントから参照できます。)
# ノードのクラス(構造体)
class Node:
    def __init__(self, val, left=None, right=None):
        # ノードの値
        self.val = val
        # 左の子ノード
        self.left = left
        # 右の子ノード
        self.right = right


# 基本的には根しか与えられない
def question(root: Node):
    ...

この続きは、購入者向けの内容です。

非表示コンテンツ 📝 27,344文字 🖼 23枚の画像

続きは購入後に閲覧できます。

この教材を購入 ↗