Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの二分探索木でk番目に小さい要素を見つけるプログラム


二分探索木があり、別の整数kがあるとすると、ツリー内でk番目に小さい値を見つける必要があります。

したがって、入力が次のような場合

Pythonの二分探索木でk番目に小さい要素を見つけるプログラム

k =3の場合、出力は7になります

これを解決するには、次の手順に従います-

  • スタック:=空のスタック

  • i:=0

  • ans:=-1

  • スタックが空でないか、ルートがnullでない場合は、実行してください

    • ルートがnullでない場合は、実行してください

      • ルートをスタックにプッシュする

      • ルート:=ルートの左側

    • v:=スタックから要素をポップ

    • iがkと同じ場合、

      • ans:=vの値

      • ループから出てきます

    • ルート:=vの右

    • i:=i + 1

  • ansを返す

理解を深めるために、次の実装を見てみましょう-

class TreeNode:
   def __init__(self, value):
      self.val = value
      self.left = None
      self.right = None

class Solution:
   def solve(self, root, k):
      stack = []
      i = 0
      ans = -1
      while stack or root:
         while root:
            stack.append(root)
               root = root.left
         v = stack.pop()
         if i == k:
            ans = v.val
            break
         root = v.right
         i += 1
      return ans
ob = Solution()
root = TreeNode(5)
root.left = TreeNode(4)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)
print(ob.solve(root, 3))

入力

root = TreeNode(5)
root.left = TreeNode(4)
root.right = TreeNode(10)
root.right.left = TreeNode(7)
root.right.right = TreeNode(15)
root.right.left.left = TreeNode(6)
root.right.left.right = TreeNode(8)
3

出力

7

  1. リスト内の最小数を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。リストで利用可能な最小の番号を表示する必要があります ここでは、リストを並べ替えて最小の要素を取得するか、組み込みのmin()関数を使用して最小の要素を取得できます。 次に、以下の実装の概念を観察しましょう- 例 list1 = [101, 120, 104, 145, 99] # sorting using built-in function list1.sort() print("Smallest element is:", list1[0]) 出力 Smal

  2. 配列内の最大の要素を見つけるPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −配列が与えられたので、配列の最大要素を計算する必要があります。 ここでは、ループ全体をトラバースして最大の要素を計算し、要素を取得するブルートフォースアプローチを使用します。 以下の実装を観察できます。 例 # largest function def largest(arr,n):    #maximum element    max = arr[0]    # traverse the whole loop    for