• 二叉搜索树:Binary Search Tree

1. 顺序性

任一节点 r (根节点或者内部节点)的左(右)子树(而不是左右孩子那么简单)中,所有结点(若存在)均不大(不小于)r。

这样设计(增加一种顺序性)二叉树的目的在于,使其中序遍历(左中右)得到的访问的序列呈单调非降的趋势。

注意,顺序性是一种很强的条件。事实上,搜索树中结点之间的全序关系,已完全“蕴含”于这一条件(顺序性)之中。

更一般性的结论如下,任何一棵二叉树是二叉搜索树,当且仅当(二者等价)其中序遍历序列单调非降。

2. 二叉搜索树的特性

一棵二叉搜索树由一组(互异的关键码)组成,可能形式不太相同,但它们的中序遍历必然相同

现在考虑这样一个问题,n 个互异结点能构成多少棵二叉搜索树。

不妨将 n 个互异结点组成的二叉搜索树的总数记作 T(n)T(n)。由以上结论可知,一组结点构成的二叉搜索树可能形态不尽相同,但其中序遍历都是一致的,不妨记作:

{x0,x1,x2,…,xk−1,},xk,{xk+1,…,xn−1}

\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 种)。则有边界条件和递推公式可知:

⎧⎩⎨⎪⎪⎪⎪T(0)=T(1)=1T(n)=∑k=0n−1T(k)⋅T(n−k−1)

\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。

二叉搜索树相关性质的应用相关推荐

  1. L2-004. 这是二叉搜索树吗? (二叉搜索树的性质)

    L2-004. 这是二叉搜索树吗? 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 一棵二叉搜索树可被递归地定义为具有下列性质的 ...

  2. 二叉搜索树相关知识及应用操作

    文章目录 概念 查找二叉搜索树的第k大节点 概念 二叉查找树(Binary Search Tree),(又名:二叉搜索树,二叉排序树)--它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不 ...

  3. 最优二叉搜索树相关内容

    01 最优二叉搜索树概念 设S={x1,x2,-,xn.}是有序集,且x1<x2<-<xn, 表示有序集S的二叉搜索树利用二叉树的结点来存储有序集中的元素.它具有下述性质:存储于每个 ...

  4. 深入学习理解二叉搜索树(附详细讲解与实例分析)

    原博客       https://blog.csdn.net/qq_21396469/article/details/78419609 写在前面 本文主要分为三个部分.        第一部分介绍了 ...

  5. 【剑指Offer】23、二叉搜索树的后序遍历序列

      题目描述:   输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则输出Yes,否则输出No.假设输入的数组的任意两个数字都互不相同.   解题思路:   对于后续遍历序列,序 ...

  6. 二叉树:二叉搜索树实现 逆序数问题

    关于逆序数的问题描述如下: 已知数组nums,求新数组count,count[i]代表了在nums[i]右侧且比 nums[i]小的元素个数. 例如: nums = [5, 2, 6, 1], cou ...

  7. 二叉搜索树的简明实现(ES5 ES6)

    二叉树 & 二叉搜索树 二叉树(Binary Tree)是 n(n >= 0)个节点的有限集合,集合为空集时,叫作空二叉树:不为空时,由根节点及左子树.右子树组成,左子树.右子树也都是二 ...

  8. l2-004 这是二叉搜索树吗?_LeetCode 例题精讲 | 11 二叉树转化为链表:二叉树遍历中的相邻结点...

    本期例题: LeetCode 98. Validate Binary Search Tree 验证二叉搜索树(Medium) LeetCode 426. Convert Binary Tree to ...

  9. PAT甲级1099 Build A Binary Search Tree (30分):[C++题解]建立二叉搜索树、dfs和bfs

    文章目录 题目分析 题目链接 题目分析 题意重述:给定一棵二叉树的结构,和待填的数值,请将数据填到二叉树中的结点中,使之满足二叉搜索树的性质. 然后按照层序遍历输出数值. 分析: 本题分两步. 第一步 ...

最新文章

  1. 网上整理的对于Rest和Restful api的理解
  2. OUYA游戏开发快速入门教程
  3. 中国python之父是谁-Python之父重回决策层
  4. Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
  5. Rails 定时任务——whenever实现周期性任务
  6. 探索企业出海新机遇与音视频技术优化实践
  7. GO语言-基础语法:循环
  8. CUDA11.1安装教程(python3.8)
  9. WIN10什么都没开内存占用率过高, WIN7单网卡设置双IP
  10. python的简单实用小工具(未完待续......)
  11. halcon学习和实践(开篇)
  12. Java——学生管理系统
  13. 大学计算机与应用软件,深圳大学
  14. POM文件Unknown报错
  15. 处理Cookie ( from http://edu.chinaz.com )
  16. python实现高斯消元法求线性方程组的解
  17. 2022年湖南省中医执业医师考试第三单元医学针灸学模拟题
  18. centos7 修改时间、时区问题
  19. Python中的len()函数如何使用?
  20. 用matlab做矩阵变换(理解+实践);假设随机发给某班所有同学任意数字,生成10*5的矩阵

热门文章

  1. Scala初步学习(三)
  2. 巨坑:从Sqoop导入MySQL导入TINYINT(1)类型数据到hive(tinyint),数据为null
  3. Transformations on DStreams之updateStateByKey 的使用和状态累加
  4. MySQL中Join算法实现原理通俗易懂
  5. java 封装log4j_Java项目 切片实现log4j的终极封装
  6. invalid signature什么意思_function是什么意思?
  7. linux mysql 修改root密码_MySQL忘了root密码,如何修改?
  8. 复制DBGrid当前行到剪切板
  9. 用户界面设计参考 (ZT)
  10. eclipse maven项目导入Intellij问题处理