数据结构&算法——二叉搜索树

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

以上是关于数据结构&算法——二叉搜索树的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法笔记(十六)—— 二叉搜索树

算法导论:二叉搜索树

数据结构与算法问题 二叉搜索树

算法--二叉搜索树的python实现

数据结构——搜索二叉树的插入,查找和删除(递归&非递归)

数据结构与算法之深入解析“验证二叉搜索树”的求解思路与算法示例