二叉搜索树相关性质的应用
- 二叉搜索树:Binary Search Tree
1. 顺序性
任一节点 r (根节点或者内部节点)的左(右)子树(而不是左右孩子那么简单)中,所有结点(若存在)均不大(不小于)r。
这样设计(增加一种顺序性)二叉树的目的在于,使其中序遍历(左中右)得到的访问的序列呈单调非降的趋势。
注意,顺序性是一种很强的条件。事实上,搜索树中结点之间的全序关系,已完全“蕴含”于这一条件(顺序性)之中。
更一般性的结论如下,任何一棵二叉树是二叉搜索树,当且仅当(二者等价)其中序遍历序列单调非降。
2. 二叉搜索树的特性
一棵二叉搜索树由一组(互异的关键码)组成,可能形式不太相同,但它们的中序遍历必然相同。
现在考虑这样一个问题,n 个互异结点能构成多少棵二叉搜索树。
不妨将 n 个互异结点组成的二叉搜索树的总数记作 T(n)T(n)。由以上结论可知,一组结点构成的二叉搜索树可能形态不尽相同,但其中序遍历都是一致的,不妨记作:
\left\{x_0,x_1,x_2,\ldots,x_{k-1},\right\},x_k,\left\{x_{k+1},\ldots,x_{n-1}\right\}
根据所选择树根结点的不同,树根为 xk,k=0,…,n−1x_k,k=0, \ldots,{n-1} ,所有的搜索树可以分为 nn 类(注意是 n 类,不是 n 种)。则有边界条件和递推公式可知:
\left\{ \begin{array}{l} T(0)=T(1)=1\\ T(n)=\sum_{k=0}^{n-1}T(k)\cdot T(n-k-1) \end{array} \right.
注意:T(n)T(n) 表示的是 nn 个互异节点构成的二叉搜索树的数目(而不是树根的位置)。T(1)T(1) 自然表示的是只有一个节点时,可能构成的二叉搜索树的数量,显然只有 1 种。T(0)T(0) 自然表示只有 0 个节点,这里规定其值为 1。
二叉搜索树相关性质的应用相关推荐
- L2-004. 这是二叉搜索树吗? (二叉搜索树的性质)
L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...
- 二叉搜索树相关知识及应用操作
文章目录 概念 查找二叉搜索树的第k大节点 概念 二叉查找树(Binary Search Tree),(又名:二叉搜索树,二叉排序树)--它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不 ...
- 最优二叉搜索树相关内容
01 最优二叉搜索树概念 设S={x1,x2,-,xn.}是有序集,且x1<x2<-<xn, 表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素.它具有下述性质:存储于每个 ...
- 深入学习理解二叉搜索树(附详细讲解与实例分析)
原博客 https://blog.csdn.net/qq_21396469/article/details/78419609 写在前面 本文主要分为三个部分. 第一部分介绍了 ...
- 【剑指Offer】23、二叉搜索树的后序遍历序列
题目描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同. 解题思路: 对于后续遍历序列,序 ...
- 二叉树:二叉搜索树实现 逆序数问题
关于逆序数的问题描述如下: 已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数. 例如: nums = [5, 2, 6, 1], cou ...
- 二叉搜索树的简明实现(ES5 ES6)
二叉树 & 二叉搜索树 二叉树(Binary Tree)是 n(n >= 0)个节点的有限集合,集合为空集时,叫作空二叉树:不为空时,由根节点及左子树.右子树组成,左子树.右子树也都是二 ...
- l2-004 这是二叉搜索树吗?_LeetCode 例题精讲 | 11 二叉树转化为链表:二叉树遍历中的相邻结点...
本期例题: LeetCode 98. Validate Binary Search Tree 验证二叉搜索树(Medium) LeetCode 426. Convert Binary Tree to ...
- PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs
文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质. 然后按照层序遍历输出数值. 分析: 本题分两步. 第一步 ...
最新文章
- 网上整理的对于Rest和Restful api的理解
- OUYA游戏开发快速入门教程
- 中国python之父是谁-Python之父重回决策层
- Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
- Rails 定时任务——whenever实现周期性任务
- 探索企业出海新机遇与音视频技术优化实践
- GO语言-基础语法:循环
- CUDA11.1安装教程(python3.8)
- WIN10什么都没开内存占用率过高, WIN7单网卡设置双IP
- python的简单实用小工具(未完待续......)
- halcon学习和实践(开篇)
- Java——学生管理系统
- 大学计算机与应用软件,深圳大学
- POM文件Unknown报错
- 处理Cookie ( from http://edu.chinaz.com )
- python实现高斯消元法求线性方程组的解
- 2022年湖南省中医执业医师考试第三单元医学针灸学模拟题
- centos7 修改时间、时区问题
- Python中的len()函数如何使用?
- 用matlab做矩阵变换(理解+实践);假设随机发给某班所有同学任意数字,生成10*5的矩阵
热门文章
- Scala初步学习(三)
- 巨坑:从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
- Transformations on DStreams之updateStateByKey 的使用和状态累加
- MySQL中Join算法实现原理通俗易懂
- java 封装log4j_Java项目 切片实现log4j的终极封装
- invalid signature什么意思_function是什么意思?
- linux mysql 修改root密码_MySQL忘了root密码,如何修改?
- 复制DBGrid当前行到剪切板
- 用户界面设计参考 (ZT)
- eclipse maven项目导入Intellij问题处理