天天看點

LeetCode 700. 二叉搜尋樹中的搜尋

題目

給定二叉搜尋樹(BST)的根節點和一個值。 你需要在BST中找到節點值等于給定值的節點。 傳回以該節點為根的子樹。 如果節點不存在,則傳回 NULL。

例如,

給定二叉搜尋樹:

        4
       / \
      2   7
     / \
    1   3

和值: 2
你應該傳回如下子樹:

      2     
     / \   
    1   3
在上述示例中,如果要找的值是 5,但因為沒有節點值為 5,我們應該傳回 NULL。           

解題思路

class Solution:
    def searchBST(self, root: TreeNode, val: int) -> TreeNode:
        if root == None: return None#特例處理
        # stack = []
        # node = root
        # #先序周遊
        # while node or len(stack)!= 0:
        #     if node:
        #         stack.append(node)
        #         if node.val == val:
        #             return node
        #         node = node.left
        #     else:
        #         node = stack.pop()
        #         node = node.right
        # return None
        #根據搜尋樹的特性進行周遊
        node = root
        while node:
            if node.val > val:
                node = node.left
            elif node.val < val:
                node = node.right
            else:
                return node
        return None           

繼續閱讀