lc.700 二叉搜索树中的搜索
lc.700 二叉搜索树中的搜索
题目要求
给定二叉搜索树(BST)的根节点 root 和一个整数值 val。
你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。
方法1:递归
二叉搜索树的性质
左子树所有节点的元素值均小于根的元素值;
右子树所有节点的元素值均大于根的元素值。
算法
若 root 为空则返回空节点;
若 val=root.val,则返回 root;
若 val<root.val,递归左子树;
若 val>root.val,递归右子树。
1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public:
TreeNode *searchBST(TreeNode *root, int val) {
if (root ** nullptr) {
return nullptr;
}
if (val ** root->val) {
return root;
}
return searchBST(val < root->val ? root->left : root->right, val);
}
};
方法2:层序
层序遍历整个树,先在最开始创建一个结点p初始化为null,如果遍历到值等于目标值的结点,就令p等于该结点,最后返回p(如果不存在目标结点,就会返回p的初始化值null)
This post is licensed under CC BY 4.0 by the author.