Leetcode題解 Python & C#:六月挑戰DAY15 Search in a Binary Search Tree

給一個二元樹的根,要找到值為 val 的 node 並回傳,沒有則回傳 None。
這裡的二元樹是嚴格的,即 node 的左子樹皆小於自身,右子樹皆大於自身,即二元搜尋樹。
用一個標準的二元樹遞迴函數也能順利地解找到答案。
不過那樣會找到太多不必要的部分,也沒有用上二元搜尋樹的特色。
由於左邊皆比自身小,如果 val 小於 node.val,那就往左方而去,反之則右方。相等就直接回傳。

Python

class Solution:
def searchBST(self, root: TreeNode, val: int) -> TreeNode:
while root:
if root.val == val:
return root
elif root.val > val:
root = root.left
elif root.val < val:
root = root.right
return root

C#

public class Solution {
public TreeNode SearchBST(TreeNode root, int val) {
if(root is null || root.val == val)
return root;
if(root.val > val)
return SearchBST(root.left, val);
else
return SearchBST(root.right, val);
}
}