Java教程

【数据结构:高级篇】为什么BST可以转换成BBST?

本文主要是介绍【数据结构:高级篇】为什么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?的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!