二分探索木(BST)のルートノードと値を考えます。あなたは、ノードの値が所定の値に等しいことBST内のノードを見つける必要があります。そのノードにサブツリーを返します。そのようなノードが存在しない場合は、NULLを返す必要があります。
例えば、
:木を考えると 4 / \ 2 7 / \ 1 3 そして、検索する値:2
あなたはこのサブツリーを返す必要があります:
2 / \ 1 3
我々は値を検索したい場合は、上記の例では、 5
値を持つノードが存在しないことから、 5
我々は返す必要があります NULL
。
空の木はで表されることに注意してください NULL
、したがって、あなたのように期待される出力(シリアル化されたツリー形式)を見ること []
はありません、 null
。
これは、バイナリ検索ツリーがあり、基本的なスキルです、ツリー内のポイントがあるかどうかを見つけることです。、H = LG2(N)O(H):バイナリサーチツリー特性は、左の子<ノード<右の子、それがTので、左側のツリーまたは右ツリーに判断することができます。
T:O(H)S:O(1)
コード
#バイナリツリーノードのための定義。 #クラスのTreeNode(オブジェクト): # デフ__init __(自己、X): # self.val = X # self.left =なし # self.right =なし クラスソリューション(オブジェクト): デフsearchBST(自己、根、ヴァル): "" " :タイプルート:ツリーノード :タイプヴァル:INT :RTYPE:TreeNodeの """ #ANS =なし しばらくルート: もし root.val> ヴァル: ルート = root.left のelifroot.val == ヴァル: リターンルート 他: ルート = root.right