二叉查找树(BST)AS3版

二叉查找树(BST),平衡二叉树(AVL),红黑树之间的区别 1. 4者的区别与联系 二叉树,二叉查找树(BST),平衡二叉树(AVL),红黑树之间的区别: 根据百度百科给出的定义,它们之间的关系可以用下图表示,平衡二叉树(平衡二叉查找树,AVL)和红黑树都是二叉查找树的一种,区别就是平衡二叉树严格平衡,红黑树是弱平衡。 而AVL树由于实现比较复杂,而且插入和删除性能差,在实际环境下的应用不如红黑树。 2. 二叉查找树(BST) 2.1 定义 左子树的值小于根节点的值,右子树的值全部大于根节点的值;左右子树分别都是一颗二叉查找树。(递归定义) 3.1.2 缺点 可 阅读详情
也称为二叉搜索树或者二叉排序树(Binary Search Tree)二叉查找树或者是一棵空树,或者是具有下列性质的二叉树:
1、每个结点都有一个作为查找依据的关键码(key),所有结点的关键码互不相同。
2、左子树(如果存在)上所有结点的关键码都小于根结点的关键码。
3、右子树(如果存在)上所有结点的关键码都大于根结点的关键码。
4、左子树和右子树也是二叉查找树。

定义一个BST:


package kono.utils.collections
{
import kono.utils.BTnode;

//二叉查找树(BST), binary search tree (BST)
public class BStree implements Icollection
{
//二叉查找树根结点, the root node of the binary search tree
private var tree:BTnode;

//查找判断的依据函数,
//the compare function will use to confirm that the left child????s data is less than the current data,
//while the right child????s data is greater than the current data
private var compare:Function;

//默认的判断函数判读的依据是BST存储了整数, default function used for the integer comparing
public function BStree(compareTo:Function = null)
{
tree = null;
if(compareTo == null)
{
compare = function(a:Number, b:Number):int
{
return int(a - b);
}
}
else
{
compare = compareTo;
}
}

//增加一个数据到BST, add a new data to BST
public function add(data:*):void
{
var cursor:BTnode = tree;
var done:Boolean = true;
if(!tree)
{
tree = new BTnode(data);
}
else
{
while(done)
{
if(compare(data, cursor.nodeData) <= 0)
{
if(cursor.leftChild)
{
cursor = cursor.leftChild;
}
else
{
cursor.leftChild = new BTnode(data);
done = false;
}
}
else
{
if(cursor.rightChild)
{
cursor = cursor.rightChild;
}
else
{
cursor.rightChild = new BTnode(data);
done = false;
}
}
}
}
}

//从BST中删除一个指定数据, remove a given data from the BST;
//@ target: 要删除的数据,如果删除成功返回true,失败或未找到返回false,
//@ target: to remove from the BST, return true if success, and return false if failed or can not find it in the BST
public function remove(target:*):Boolean
{
var cursor:BTnode = tree;
var parentCursor:BTnode = null;
var t:int;
while(cursor)
{
t = compare(target, cursor.nodeData)
if(t == 0)
{
if(cursor == tree && cursor.leftChild == null)
{
tree = tree.rightChild;
return true;
}
if(cursor.leftChild == null)
{
if(cursor == parentCursor.leftChild)
{
parentCursor.leftChild = cursor.rightChild;
return true;
}
else
{
parentCursor.rightChild = cursor.leftChild;
return true;
}
}
else
{
cursor.nodeData = cursor.leftChild.rightMostData;
cursor.leftChild.removeRightMost();
return true;
}
}
else
{
parentCursor = cursor;
cursor = t < 0 ? cursor.leftChild : cursor.rightChild;
}
}
return false;
}

//清空BST, clear all the items in the BST
public function clear():void
{
tree = new BTnode(null);
tree = null;
}

//返回BST中包含的结点, get the total number in the BST
public function get size():uint
{
return BTnode.getSize(tree);
}

//中序转换结点数据到array中, write all of the data in the BST into a Array
public function toArray():Array
{
var a:Array = new Array();
var inorder:Function = function (node:BTnode):void
{
a.push(node.nodeData);
}
tree.inorderPrint(inorder);
return a;
}

//判断BST是否包含给定数据, check if the BST contains the given item
public function contains(item:*):Boolean
{
var cursor:BTnode = tree;
var t:int;
while(cursor)
{
t = compare(item, cursor.nodeData)
if(t == 0)
return true;
else
{
cursor = t < 0 ? cursor.leftChild : cursor.rightChild;
}
}
return false;
}

//打印BST结构, print the BST????s frame
public function print():void
{
tree.print(2);
}

//返回BST的信息, return a string representing the BST
public function toString():String
{
return "[BStree, size=" + size + "]";
}
}
}

本文转自
http://www.moorwind.com/read.php?41
Flash(ActionScript 3.0) Tree组织结构树 纯as3.0写的Tree,完美支持xml,用法: <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <fx:XML source="assets/relation.xml" id="data"/> </fx:Declarations> <component:UserTree id="treeStruct" x="0" y="0" width="277" height="538" borderVisible="false" treeType="0" doubleClickEnabled="true" mouseEnabled="true" disclosureClosedIcon="@Embed(&#39;assets/triangle-normal.png&#39;)" disclosureOpenIcon="@Embed(&#39;assets/triangle-open.png&#39;)" allowMultipleSelection="true" itemRenderer="tasklib.component.UserTreeRenderer" labelField="@labels" dataProvider="{data}"> </component:UserTree> 立即下载

相关推荐

AS3数据结构算法集(全源码)

包含如下内容: AbstractLinkedList AbstractLinkedListNode Array2 Array3 ArrayedQueue ArrayedStack BinarySearchTree BinaryTreeNode BitVector Collection DLinkedList DListIterator DListNode Graph GraphArc GraphNode HashMap HashTable Heap Iterator LinkedList LinkedListNode LinkedQueue LinkedStack NullIterator Prioritizable PriorityQueue Set SLinkedList SListIterator SListNode SortOptions TreeIterator TreeNode

游戏开发者的AS3数据结构 COOL!

游戏开发者的AS3数据结构 COOL! 游戏开发者的AS3数据结构 Posted on 2007-09-10 15:27 flashlizi 阅读(682) 评论(0) 编辑收藏 引用 所属分类: AS3 MichaelBaczynski根据他多年的flash游戏开发经验开发了一套游戏开发者的AS3数据结构(AS3DataStructures...

SilverFoxGame的博客 185

AS3类继承树+AS3中文API

AS3类继承树+AS3中文API.整个ActionScript3的类关系图以及ActionScript中文API。是很值得参考的资料。

【数据结构】二叉查找树(BST)

二叉查找树(Binary Search Tree,BST),又叫做二叉排序树、二叉搜索树,是一种对查找和排序都有用的特殊二叉树。二叉查找树的特性:左子树

m0_46628950的博客 8174

flash中tree组件的应用说明及实例(非常详细)

flash中tree组件的应用说明及实例(非常详细) flash中tree组件的应用说明及实例(非常详细)

前端埋点的实践

1、前言 开始正文前先介绍一下埋点的概念~,(熟悉的朋友可以略过) 前端埋点: 是一种手段,它的目的是上报相关行为数据,相关人员以数据为依据来分析产品在用户端的使用情况,根据分析出来的结果辅助产品优化、迭代。 BI:商业智能,公司内部做数据分析相关的部门。 2、背景 在流量红利逐渐消失的现在,数据的采集、分析和精细化的运营显得更加重要,所以埋点的需求在互联网产品中是很常见的,目的上面也提到了。我们的追求就是又快又好的做好埋点工作,但是现实却不那么美好;目前我们团队在前端埋点方面存在一些痛点: 在构造埋点字段

Arui_0的博客 1772

AS3四叉树

在一些游戏中,当地图上有很多元素时,或者有一张很大的地图需要渲染。通常的做法是遍历所有的显示对象,但是这样做,可能会占用大量的CPU,所以为了处理这种情况。我们可以使用四叉树,这里的四叉树,就是把场景划分为四等分,然后每一小份再分成四等分,这下分下去,通常情况分四五次就行了。具体分几层,可以在实践中去测试,以获得最高的效率。下面是四叉树中的公开的类,其实很简单,就是先建树,然后往里面添加对象,移除...

chqj_163的专栏 288

如何用zemax导入solidworks装配体

在zemax使用中,常常需要导入各种零件。如果光机结构较为复杂,那么手工一个一个加载零件,还需要在zmx文件中调整object的位置,非常麻烦。如果能将solidworks的装配体模型直接导入,则可以大幅减小工作量。具体过程为(非序列模式下): 1、新建或打开一个zemax空文件 2、在元件编辑器中,找到一个空文件,双击或直接展开三角符,在类型中找到zemax里的solidworks装配体,如图。...

wojiaoyyy的博客 1万+

二叉排序树(二叉查找树、二叉搜索树)(图解+完整代码)

图解二叉排序树(二叉查找树、二叉搜索树)的插入操作、查找操作、删除操作以及完整的代码实现

weixin_54186646的博客 10万+

STM32F103多通道PWM输出避坑指南:TIM1_CH1异常输出的解决方案

本文深入解析STM32F103多通道PWM输出中的TIM1_CH1异常问题,提供从时钟配置到GPIO复用的系统化解决方案。通过黄金法则配置流程和高级调试技巧,帮助开发者快速定位并解决PWM输出不稳定、占空比异常等问题,同时拓展多定时器协同和互补PWM等高级应用场景。

weixin_29194817的博客 117

Figma入门-自动布局

Figma原型图制作内置组件友好,自动布局类似CSS flex,通过布局网格控制对齐、分布、换行等,前端熟悉的同学易上手,参数设置基本一致。

我码玄黄的博客 2173

AS3二叉树排序法排序

从别人博客上找到一篇关于as3快速排序的代码,使用后发现在有大量相同数据的情况下,排序不可靠,容易出现堆栈溢出的现象,     突然记起看过一个C的二叉树排序法,现改成AS3版本并加以注释。 全部代码如下 private function mysort(array:Vector.,left:int,right:int):void{ var tl:int = left;v

IceFlame 1578

药物对接仿真软件:HADDOCK_(9).结果分析方法

HADDOCK是一种强大的药物对接仿真工具,通过对生成的输出文件进行详细的分析,我们可以验证仿真结果的可靠性,并为进一步优化药物设计提供依据。常见的分析方法包括解读输出文件、使用可视化工具进行结构分析、评估对接模型的稳定性和准确性等。通过这些步骤,我们可以更全面地了解受体和配体的结合模式,从而提高药物设计的成功率。

kkchenjj的博客 1005

二叉查找树(BST)及二叉树的遍历

二叉查找树(BST)及二叉树的遍历 一、二叉查找树(BST) 1、二叉查找树的特征   二叉查找树(BST)也称为二叉搜索树或二叉排序树。二叉查找树的节点包含键值key。二叉查找树或者是一棵空树,否则要求: 1. 若它的左子树不为空,那么左子树上所有节点的key都小于根节点的key。 2. 若它的右子树不为空,那么右子树上所有节点的key都大于根节点的key。 . 它的左右子树也分别为...

最怕一生碌碌无为,还安慰自己平凡可贵 2万+

手把手教你学Simulink——机器人控制场景实例:基于Simulink的双足人形机器人步态生成与ZMP稳定控制仿真

ZMP是地面上合力矩在水平方向为零的点。对于平面行走: [ x_{\text{zmp}} = x_c - \frac{z_c}{g} \ddot{x}_c ]📌稳定性判据ZMP必须始终位于支撑脚的凸包(即脚掌范围内)本文完成了基于Simulink的双足人形机器人ZMP稳定控制仿真,实现了:✅ 基于LIPM生成稳定CoM轨迹✅ 构建ZMP参考与验证机制✅ 设计简化踝关节PD控制器✅ 验证ZMP始终位于支撑脚内 → 动态平衡✅ 为人形机器人步态规划奠定理论基础。

MHD0815的博客 138

站在评审的角度写国自然基金本子,搭配这5条AI提示词,帮你一键提升本子中标率

多数同仁的选题失败,不是因为你的idea不好,而是你的逻辑没有立起来,你必须让评审看到,你是怎么从问题走向方法的。请你按照“同行做到哪、瓶颈卡在哪、我该怎么破”的逻辑,将我的创新点进行重构:【粘贴你原始的创新点描述】,要求:表达需结构化、可量化、可验证,突出对比后的实质性突破。与其等着评审指出问题,等着本子被拒,不如让AI提前模拟评审,帮你从可行性、创新性、国家价值、团队能力四个维度给你打分,并指出项目的致命破绽,提示词这样设计。创新点如果写不好,本子往往也会被拒,而评审一般喜欢的创新点都是有固定结构的。

智能AI让学术科研更容易 1238

二叉查找树(5) - 判断一棵二叉树是否为BST

二叉查找树(5) - 判断一棵二叉树是否为BST

1万+

sap中途启用物料账

spro->控制->产品成本控制->实际成本核算/物料分类帐->实际成本核算->激活实际成本的在产品。spro->控制->产品成本控制->实际成本核算/物料分类帐->实际成本核算->激活实际成本组件划分。spro->控制->产品成本控制->实际成本核算/物料分类帐->实际成本核算->激活实际成本核算。spro->控制->产品成本控制->实际成本核算/物料分类帐->激活评估范围的物料分类账。2.对于之前存在物料移动,但是期初没有库存的物料,物料分类账里追踪不到相关物料信息。1.需要激活物料分类账。

Yeol827的博客 991

【详解】二叉查找树BST与平衡树Treap

二叉查找树BST与平衡树Treap 一、二叉查找树 1.概念 二叉查找树(简称BST),是满足以下条件的二叉树: 树上每一个节点都有一个权值; 树上任意一个节点x,若左子树不为空,则左子树上所有节点权值均小于x的权值; 树上任意一个节点x,若右子树不为空,则左子树上所有节点权值均大于x的权值; 2.二叉查找树的操作 二叉查找树的建立 struct BST { int l,r; int val; }s[SIZE]; 二叉查找树的查找 二叉查找树的插入 二叉查找树找最值 二叉查找树的

_BOSS_的博客 979

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

二叉查找树(BST)

二叉查找树(BST)是一种特殊的二叉树,其每个节点的左子树值小于该节点,右子树值大于该节点。BST的基本操作包括查找、插入和删除,其中删除操作较为复杂,需根据节点子节点数量采取不同策略。BST的性能在平衡情况下为O(logn),但在最坏情况下可能退化为O(n)。BST的扩展应用包括AVL树、红黑树、伸展树和Treap等,它们通过不同机制保持树的平衡。

小瑾的博客 1410

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数据结构——实现一个二叉查找树(BST)

文章目录1.BST的性质:2.BST的遍历 BST(Binary Search Tree):二叉查找树,也叫二叉搜索树,或称二叉排序树Binary Sort Tree 1.BST的性质: 每一个元素都有一个键值,并且键值不允许重复 左子树的所有节点的键值都小于根结点 右子树的所有节点的键值都大于根结点 左右子树都是一个BST树 2.BST的遍历 BST是一种特殊的二叉树,它的遍历方法和二叉树相同,分为前序遍历、中序遍历和后序遍历,这3种遍历的实现(递归和迭代)我在前面的文章已经介绍过了,有兴趣可以参考一

weixin_43744293的博客 1168

【数据结构】什么是二叉查找树(BST)

什么是二叉查找树(BST) 1. 什么是BST 对于二叉树中的每个节点X,它的左子树中所有项的值都小于X中的项,它的右子树中所有项的值大于X中的项。这样的二叉树是二叉查找树。 以上是一颗二叉查找树,其特点是: (1)若它的左子树不为空,则左子树上的所有节点的值都小于它的根节点的值; (2)若它的右子树不为空,则右子树上所有节点的值都大于它的根节点的值; (3)其他的左右子树也分别为二叉...

a15919528001的博客 709

二叉查找树 BST

二叉查找树 BST :https://blog.youkuaiyun.com/cj_286/article/details/90183298 二叉平衡树 AVL :https://blog.youkuaiyun.com/cj_286/article/details/90217072 红黑树 RBT :https://blog.youkuaiyun.com/cj_286/article/details/90245150 ...

cj_286的博客 420
上一篇: 堆(Heap)AS3版
下一篇: 一次设定多个style给UIComponent
microrain
博客等级 码龄25年 1127粉丝 194原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值