定义和性质
二叉搜索树(BinarySearchTree
,简称BST
)是一种特殊的二叉树,它满足以下性质:
1.若左子树不空,则左子树上所有节点的值均小于根节点的值。
2.若右子树不空,则右子树上所有节点的值均大于根节点的值。
3.任意节点的左、右子树也分别为二叉搜索树。
中序遍历性质
二叉搜索树的一个重要特性是其中序遍历的结果一定是有序
的。这是因为中序遍历首先访问左子树,然后访问根节点,最后访问右子树。由于左子树上的所有节点值都小于根节点,右子树上的所有节点值都大于根节点,因此中序遍历的结果自然就是有序的。
不支持重复键值
二叉搜索树一般不支持键值冗余,即不允许有重复的键值。这是因为二叉搜索树的性质决定了它无法有效地处理重复键值的情况,这可能会导致树的平衡性被破坏,影响搜索效率。
/**
* Definition for a binary tree node.
* struct TreeNode {
* int val;
* TreeNode *left;
* TreeNode *right;
* TreeNode(int x) : val(x), left(NULL), right(NULL) {}
* };
*/
class Solution {
public:
TreeNode* ans;
TreeNode* kthNode(TreeNode* root, int k) {
dfs(root, k);
return ans;
}
void dfs(TreeNode* root, int& k){
if(!root) return;
dfs(root->left, k);
k --;
if(!k) ans = root;
if(k > 0) dfs(root->right, k);
}
};