题目
给定二叉搜索树(BST)的根节点和一个值。 你需要在BST中找到节点值等于给定值的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 NULL。
例如,
给定二叉搜索树: 4 / \ 2 7 / \ 1 3 和值: 2
你应该返回如下子树:
2 / \ 1 3
解题
python写法
# Definition for a binary tree node. # class TreeNode: # def __init__(self, val=0, left=None, right=None): # self.val = val # self.left = left # self.right = right class Solution: def searchBST(self, root: TreeNode, val: int) -> TreeNode: cur = root while cur: if val<cur.val: cur = cur.left elif val>cur.val: cur = cur.right else: return cur return None
c++写法
class Solution { public: TreeNode* searchBST(TreeNode* root, int val) { TreeNode* cur=root; while(cur){ if(cur->val==val) return cur; else if(cur->val<val) cur=cur->right; else cur=cur->left; } return nullptr; } };
java写法
class Solution { public TreeNode searchBST(TreeNode root, int val) { TreeNode cur=root; while(cur!=null){ if(val==cur.val) return cur; else if(val>cur.val){ cur=cur.right; }else{ cur=cur.left; } } return null; } }