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