平衡二叉树
二叉搜索树和平衡二叉搜索树的相关概念和算法实现。
✏️ 一、二叉搜索树
1、定义
2、验证二叉搜索树
bool isValidBST(TreeNode* root){
if(root && !root->left && !root->right)
return true;
stack<TreeNode *> istack;
TreeNode *ptr = root;
long long last_val = (long long)INT_MIN - 1; // 扩大int的范围,考虑边界值
while(ptr || !istack.empty()){
while(ptr) {
istack.push(ptr);
ptr = ptr->left;
}
TreeNode *curr_ptr = istack.top();
if(curr_ptr->val <= last_val)
return false;
last_val = curr_ptr->val;
istack.pop();
ptr = curr_ptr->right;
}
return true;
}bool helper(TreeNode* root, long long lower, long long upper) {
if(root == NULL)
return true;
if(root->val <= lower || root->val >= upper)
return false;
return helper(root->left, lower, root->val)
&& helper(root->right, root->val, upper);
}
bool isValidBST(TreeNode* root){
return helper(root, LONG_MIN, LONG_MAX);
}


3、应用
✏️ 二、平衡二叉(搜索)树
🖋️ 1、AVL树
AVL树🖋️ 2、红黑树

💎 2.2、散列表、红黑树和跳表
最后更新于