创建二叉搜索树,
二叉搜索树的性质为左孩子结点总是比根节点小,右孩子结点总是比根节点大。这里使用了一个二维数组来初始化二叉搜索树。
struct TreeNode {
int val;
TreeNode *left;
TreeNode *right;
TreeNode(int x) : val(x), left(NULL), right(NULL) {}
};
class Solution {
private:
TreeNode* root;
TreeNode* cur;
public:
void insertNode(int target)
{
if (root == nullptr)//为空树
{
root = new TreeNode(target);
}
else
{
cur = root;
while (cur!=nullptr)//找叶节点
{
if (target <= cur->val)
{
if (cur->left == nullptr)
{
cur->left = new TreeNode(target);
break;
}
cur = cur->left;
}
else
{
if (cur->right == nullptr)
{
cur->right = new TreeNode(target);
break;
}
cur = cur->right;
}
}
}
}
bool searchBST(TreeNode*tmp, int target)
{
if (!tmp)
{
return false;
}
if (tmp->val == target)
{
return true;
}
return root->val<target?searchBST(tmp->right,target):searchBST(tmp->left,target);
}
bool searchMatrix(vector<vector<int>>& matrix, int target) {
for (int i = 0;i < matrix.size();i++)
{
for (int j = 0;j < matrix[0].size();j++)
{
insertNode(matrix[i][j]);
}
}
return searchBST(root, target);
}
};