欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > C++二叉搜索树代码

C++二叉搜索树代码

2025/3/10 19:01:34 来源:https://blog.csdn.net/qq_43355454/article/details/146106627  浏览:    关键词:C++二叉搜索树代码

代码一,对应力扣二叉搜索树中的检索,代码见下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:TreeNode* searchBST(TreeNode* root, int val) {if(root == NULL){return NULL;}if(root->val < val){return searchBST(root->right, val);}else if(root->val > val){return searchBST(root->left, val);}else{return root;}}
};

代码二,对应力扣 二叉搜索树的范围和,代码见下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {
public:int rangeSumBST(TreeNode* root, int low, int high) {if(root == NULL){return 0;}int sum = 0;if(root->val >= low && root->val <= high){sum += root->val;}sum += rangeSumBST(root->left, low, high);sum += rangeSumBST(root->right, low, high);return sum;}
};

代码三,将有序数组转化为二叉搜索树,代码见下:

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {TreeNode* sortArray(vector<int>& nums, int l, int r){if(l > r){return NULL;}int mid = (l + r)/2;TreeNode* node = new TreeNode(nums[mid]);node->left = sortArray(nums, l, mid-1);node->right = sortArray(nums, mid+1, r);return node;}
public:TreeNode* sortedArrayToBST(vector<int>& nums) {return sortArray(nums, 0, nums.size()-1);}
};

代码四,对应力扣 验证二叉搜索树,代码见下

/*** Definition for a binary tree node.* struct TreeNode {*     int val;*     TreeNode *left;*     TreeNode *right;*     TreeNode() : val(0), left(nullptr), right(nullptr) {}*     TreeNode(int x) : val(x), left(nullptr), right(nullptr) {}*     TreeNode(int x, TreeNode *left, TreeNode *right) : val(x), left(left), right(right) {}* };*/
class Solution {vector<int> ret;void inOrder(TreeNode* root){if(root){inOrder(root->left);ret.push_back(root->val);inOrder(root->right);}}public:bool isValidBST(TreeNode* root) {ret.clear();inOrder(root);for(int i=1; i<ret.size(); ++i){if(ret[i] < ret[i-1]){return false;}}return true;}
};

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词