【数据结构:高级篇】为什么BST可以转换成BBST?
2021/3/29 8:11:16
本文主要是介绍【数据结构:高级篇】为什么BST可以转换成BBST?,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
BST(Binary Search Tree)二叉搜索树
BBST (Balance Binary Search Tree) 平衡二叉搜索树
1,首先看一下什么是BST?
直观上看,左边的节点小于右边的节点,就是BST,定义就是任意节点均不大于其右子树中的节点,不小于其左子树中的节点
2,什么是BBST平衡二叉树?
N个节点构成的二叉树,树高为log2N,称为理想平衡
N个节点构成的二叉树,树高渐进地接近log2N,称为适度平衡
适度平衡的BST称为BBST(通俗讲,就是左右子树差值不要超过1)
3,两棵结构不同的树,但中序遍历的结果相同,这就是BST转换成BBST的基础。(旋转的理论依据)
4,两棵结构不同的树,但中序遍历的结果相同,这个歧义性带来的好处和坏处?
中序遍历的歧义性坏处:中序遍历的歧义性,在中缀表达式的求值计算,就不得不想办法,辨析不同操作符之间的优先级。
对于BST 中序遍历的歧义性,是必不可少的。因为它能实现不同的树形结构,相同的中序遍历顺序。这是等价变化的前提。
**歧义性带来的好处等价Bst:**对于任意的bst,它们的中序遍历相同,但结构不同,称它们为等价的bst。
等价bst之间的关系和转换方式:左旋,右旋
上下可变:祖先和孙子节点可换位置。
左右不乱:中序遍历不能乱,左右孩子不能乱。
左旋:
右旋:
原文链接:https://mp.weixin.qq.com/s/hIoBvnSbhduMNuU2jUGZyg
作者:一起写程序
这篇关于【数据结构:高级篇】为什么BST可以转换成BBST?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24Java中定时任务实现方式及源码剖析
- 2024-11-24鸿蒙原生开发手记:03-元服务开发全流程(开发元服务,只需要看这一篇文章)
- 2024-11-24细说敏捷:敏捷四会之每日站会
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解