これは最近のインタビューの質問でした。その質問は、範囲[x, y]
に含まれるBSTの最大サブツリーのサイズがx < y
であることを確認するよう求められました。 BSTは、各ノードが整数値、左の子ノード、および右の子ノードを有する場合に再帰的に定義される。私はその範囲内にあるが最大のサブツリーを見つけることができなかったツリー内のノードの総数にしかできませんでした。ここで私が使用したコードはPythonで、です:範囲に含まれるbstの最大サブツリーのサイズを調べる
def solution(x, y, T):
if T is None:
return 0
size = 0
if x < T.val:
size += solution(x, y, T.left)
if x <= T.val and y >= T.val:
size += 1
# The following if statement was my attempt at resetting the count
# whenever we find a node outside the range, but it doesn't work
if x > T.val or y < T.val:
size = 0
if B > T.x:
size += solution(A, B, T.right)
return size
N
は、ツリー内のノードの数であるソリューションはO(N)
する必要があります。 BST内の各ノードで