数据结构&算法——二叉搜索树
Posted vector6_
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构&算法——二叉搜索树相关的知识,希望对你有一定的参考价值。
数据结构&算法——二叉搜索树
BST 的特性:
1、对于 BST 的每一个节点 node
,左子树节点的值都比 node
的值要小,右子树节点的值都比 node
的值大。
2、对于 BST 的每一个节点 node
,它的左侧子树和右侧子树都是 BST。
整体上BST也是基于递归的思想和方法,但额外的特性是中序遍历即有序
二叉搜索树中第K小的元素
给定一个二叉搜索树的根节点
root
,和一个整数k
,请你设计一个算法查找其中第k
个最小元素(从 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
public:
int rank = 0;
int res = 0;
int kthSmallest(TreeNode* root, int k)
traverse(root, k);
return res;
void traverse(TreeNode* root, int k)
if(root==nullptr)
return;
traverse(root->left, k);
rank++;
if(rank == k)
res = root->val;
return;
traverse(root->right, k);
;
中序遍历,维护当前节点的排序rank
以上是关于数据结构&算法——二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章