二叉搜索树相关知识及应用操作
文章目录
- 概念
- 查找二叉搜索树的第k大节点
概念
二叉查找树(Binary Search Tree),(又名:二叉搜索树,二叉排序树)——它或者是一棵空树,或者是具有下列性质的二叉树:
- 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值;
- 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值;
- 它的左、右子树也分别为二叉排序树。
二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。
查找二叉搜索树的第k大节点
二叉搜索树如上,如果我们想要返回其中第K大的节点,应该怎么做呢?
首先要知道一个性质:二叉搜索树的中序遍历为 递增序列
。
给出的二叉搜索树中序遍历结果为:
1, 2, 3, 4, 5, 6
因此,想要获得第K大的节点,只要倒序进行中序遍历(左根右的顺序变为右根左),即可得到降序排列的二叉搜索树节点序列,序列中第K个元素即为我们所求。
代码实现:
/*** 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 {int res, k;void midsearch(TreeNode* root){if(root==nullptr) return;midsearch(root->right);if(k==0) return;if(--k==0) res = root->val;midsearch(root->left);}
public:int kthLargest(TreeNode* root, int k) {this->k = k;midsearch(root);return res;}
};
二叉搜索树相关知识及应用操作相关推荐
- 二叉搜索树相关性质的应用
二叉搜索树:Binary Search Tree 1. 顺序性 任一节点 r (根节点或者内部节点)的左(右)子树(而不是左右孩子那么简单)中,所有结点(若存在)均不大(不小于)r. 这样设计(增加一 ...
- 最优二叉搜索树相关内容
01 最优二叉搜索树概念 设S={x1,x2,-,xn.}是有序集,且x1<x2<-<xn, 表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素.它具有下述性质:存储于每个 ...
- 6-12 二叉搜索树的操作集
6-12 二叉搜索树的操作集(30 分) 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); Bin ...
- 数据结构 - 从二叉搜索树说到AVL树(一)之二叉搜索树的操作与详解(Java)
二叉搜索树(Binary Search Tree),简称BST,顾名思义,一颗可以用于搜索的二叉树.BST在数据结构中占有很重要的地位,一些高级树结构都是其的变种,例如AVL树.红黑树等,因此理解BS ...
- 04-树7 二叉搜索树的操作集(c语言实现)
题目 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTr ...
- 04-树7 二叉搜索树的操作集 (30 分)
本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree ...
- 6-1 二叉搜索树的操作集 (30 分)
大一下半期数据结构 二叉搜索树的操作集 本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinT ...
- 算法 树7 二叉搜索树的操作集
全部每周作业和视频思考题答案和解析 见 浙江大学 数据结构 思考题+每周练习答案汇总 题目:本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree ...
- 6-12 二叉搜索树的操作集 (30 分)
本题要求实现给定二叉搜索树的5种常用操作. 函数接口定义: BinTree Insert( BinTree BST, ElementType X ); BinTree Delete( BinTree ...
最新文章
- 认知AI的兴起:2025年AI将会发生质的飞跃
- opencv 人脸识别 (二)训练和识别
- 报表建oracle表,建立Oracle report报表基本步骤及创建报表技巧
- 20110609 搭域控,布线,设计网络,杂事一堆啊
- mybatis写当天 当月的数据 时间段数据https://www.cnblogs.com/xzjf/p/7600533.html
- 个人对持续集成的理解和实践
- centos7 校正linux系统时间_基于centos7系统部署NTP服务及配置时间定时同步
- 可能是Asp.net Core On host、 docker、kubernetes(K8s) 配置读取的最佳实践
- 动态数组与迭代器 0119
- Iptables Nat转发
- 测试思想-验收测试 关于验收测试
- 调试网页PAIP HTML的调试与分析工具
- LINUX使用C调用LMDB的方法
- mysql个人记账系统_个人记账系统
- 低配电脑Win10哪个版本好用?
- 【线性代数(1)】二阶三阶不等式
- MY1690-12P语音模块实现特定的语音提示功能
- Failed to read artifact descriptor for xxx:jar的问题解决
- 技术进化论,GITC2014来见证
- 基于PYNQ的AD采集系统
热门文章
- js 获取域名_RapidDNS域名查询如何联动Goby
- 和lua的效率对比测试_Unity游戏开发Lua更新运行时代码!
- win10 python 调用模块_python常识系列14--gt;python通过jpype模块调用jar包
- RegOpenKeyEx 返回值 2
- __builtin_expect详解
- ubuntu/wireshark --Lua: Error during loading: [string /usr/share/wireshark/init.lua]:45问题解决
- location.href属于重定向还是转发_servlet2 单元测试、转发、重定向
- 苹果X可以升级5G吗_苹果x可以用5g网络吗
- LSGO软件技术团队2015~2016学年第三周(0914~0920)总结
- 【转】win32窗口的大小,居中,拖动