js 二叉树图形_在线生成二叉树(基于EaselJS(canvas))
var Node = function(_date,_parent) {this.Data =_date;this.Parent =_parent;this.LeftNode = null;this.RightNode = null;
}var BinaryTree = function() {this.Root = null;//根节点
this.Insert = function(insertValue) {if (this.Root == null) {this.Root = new Node(insertValue,null);return;
}var node = this.Root;while (true) {if (node.Data >insertValue) {if (node.LeftNode == null) {
node.LeftNode= newNode(insertValue,node);break;
}else{
node=node.LeftNode;
}
}else if (node.Data
node.RightNode= newNode(insertValue, node);break;
}else{
node=node.RightNode;
}
}else{break;
}
}
};varmaxLevel;varlevel;this.Level = function() {
maxLevel= 0;
level= 0;return levels(this.Root);
}functionlevels(node) {if (node.LeftNode != null) {
level++;
levels(node.LeftNode);
}
maxLevel=Math.max(maxLevel, level);if (node.RightNode != null) {
level++;
levels(node.RightNode);
}
level--;returnmaxLevel;
}this.SetPoint = function() {var thisMaxLevel = this.Level();var childQuanty = Math.pow(2, thisMaxLevel);this.Root.nodeLevel = 0;this.Root.nodePoint = 0;if (this.Root.LeftNode != null)
{
setPointsLeft(this.Root.LeftNode, -1 * childQuanty / 2, 0, thisMaxLevel - 1);
}if (this.Root.RightNode != null)
{
setPointsRight(this.Root.RightNode, childQuanty / 2, 0, thisMaxLevel - 1);
}
}functionsetPointsLeft(node, point, levels, thisMaxLevel) {++levels;
node.nodeLevel=levels;
node.nodePoint=point;if (node.LeftNode != null) {
setPointsLeft(node.LeftNode, point- Math.pow(2, thisMaxLevel -levels), levels, thisMaxLevel);
}if (node.RightNode != null) {
setPointsLeft(node.RightNode, point+ Math.pow(2, thisMaxLevel -levels), levels, thisMaxLevel);
}
}functionsetPointsRight(node, point, levels, thisMaxLevel) {++levels;
node.nodeLevel=levels;
node.nodePoint=point;if (node.LeftNode != null) {
setPointsRight(node.LeftNode, point- Math.pow(2, thisMaxLevel -levels), levels, thisMaxLevel);
}if (node.RightNode != null) {
setPointsRight(node.RightNode, point+ Math.pow(2, thisMaxLevel -levels), levels, thisMaxLevel);
}
}this.PreOrder = function(funs) {
preOrder(this.Root, funs);
}functionpreOrder(node, funs) {
funs(node);if (node.LeftNode != null) {
preOrder(node.LeftNode, funs);
}if (node.RightNode != null) {
preOrder(node.RightNode, funs);
}
}this.Search = function(number)
{return search(this.Root, number);;
}functionsearch(node,number)
{if (node == null)
{return null;
}if (node.Data>number)
{returnsearch(node.LeftNode,number);
}else if (node.Data
}else{returnnode;
}
}this.Remove = function(number)
{var node = this.Search(number);if (node != null)
{
remove.call(this,node);
}
}functionremove(node)
{varchild, parent;if (node.LeftNode != null && node.RightNode != null) {var tempNode =findMin(node.RightNode);if (node.Parent == null) {this.Root =tempNode;
}else{if (node.Parent.LeftNode ==node) {
node.Parent.LeftNode=tempNode;
}else{
node.Parent.RightNode=tempNode;
}
}
child=tempNode.RightNode;
parent=tempNode.Parent;if (parent.Data ==node.Data) {
parent=tempNode;
}else{if (child != null) {
child.Parent=parent;
}
parent.LeftNode=child;
tempNode.RightNode=node.RightNode;
node.RightNode.Parent=tempNode;
}
tempNode.Parent=node.Parent;
tempNode.LeftNode=node.LeftNode;
node.LeftNode.Parent=tempNode;
}else{if (node.LeftNode != null) {
child=node.LeftNode;
}else{
child=node.RightNode;
}
parent=node.Parent;if (child != null) {
child.Parent=parent;
}if (parent != null) {if (parent.LeftNode!=null && parent.LeftNode.Data ==node.Data) {
parent.LeftNode=child;
}else{
parent.RightNode=child;
}
}else{this.Root =child;
}
}
node= null;
}this.FindMin = function()
{
findMin(this.Root);
}functionfindMin(node)
{if (node.LeftNode == null)
{returnnode;
}returnfindMin(node.LeftNode);
}this.FindMax = function()
{return findMax(this.Root);
}functionfindMax(node)
{if (node.RightNode == null)
{returnnode;
}returnfindMax(node.RightNode);
}
}
js 二叉树图形_在线生成二叉树(基于EaselJS(canvas))相关推荐
- 常用的js代码以及自动在线生成JavaScript工具地址
1:数组求和使用reduce let nums = [1,22,31,4,56] let sum = nums.reduce((prev, cur) => prev + cur, 0) 2:数组 ...
- d3.js 旋转图形_[内附完整源码和文档] 基于Qt实现的图形系统
一.概述 本系统拟完成一个图形系统,对多种常见图形进行基本操作 系统功能 二维图形的输入:可输入或全部清除不同颜色的直线.矩形.圆.椭圆.多边形.曲线.铅笔工具 二维图形的编辑:对于直线.矩形.圆.椭 ...
- 二叉树剪枝_决策树,生成剪枝,CART算法
决策树 1. 原理 1.1 模型简介 决策树是一种基本的回归和分类算法.在分类问题中,可以认为是一系列 if-then 规则的几何.决策树学通常包括三个步骤:特征选择,决策树的生成, 决策树的修剪. ...
- php 图片印章_在线生成实用又方便 (图片印章)
1.Eoool在线制作LOGO.Banner.Email.Rss.签名.头像,但模板比较少,格式也比较少.- T2 W* p5 T0 D: R# M/ } http://www.eoool.com & ...
- 小程序 formid 生成_在线生成在线制作配音小程序
输入文字,生成声音--在线用文字制作声音文件. 有男声.女声.童声.方言和英语,应有尽有,语音效果自然流畅. 在线配音生成器,无需下载安装,直接在线即可生成配音文件,你可以用于抖音快手等短视频里面的配 ...
- java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。
原题 给定一个二叉树,检查它是否是镜像对称的. 原理 以根节点划分中心线,检查是否镜像对称. 一个指向从左节点出发,一个节点从右节点出发比较. 左节点的左孩子和右节点的右孩子比较 左节点的右孩子和右节 ...
- d3.js 旋转图形_几何画板第9期图形的组合型运动
好文速递 [01]模型 | 几何动点最值,路径最值策略 [02]基于"一题一课"的数学思想方法渗透 [03]培优拔高 | 初中最值问题的19大类型 [04]一道二次函数经典题的50 ...
- d3.js 旋转图形_玩转数学(99)美妙的图形
玩转 数学 美妙的图形 IPS数学名师空间站开发的"玩转数学"内容持续推送中,孩子们动脑,动口,动手,真正成为学习的主人.今天,我们一起来玩"美妙的图形"吧! ...
- d3.js 旋转图形_有意思,C4D三维模型地形图形切片插件 Toporizer 1.0 for Cinema 4D R19S22带中文汉化...
中文汉化C4D插件-三维模型地形图形切片插件 Toporizer 1.0 for Cinema 4D R19-S22 Toporizer 1.0 for Cinema 4D R19-S22是一款由Me ...
最新文章
- 【周末阅读】工业互联网的发展历程及实现路径
- 激活手表显示无法登陆服务器,在Firefox中使用Nightwatch运行测试无法连接到Selenium服务器...
- Vue中使用Openlayers加载Geoserver发布的TileWMS
- 六、推荐系统原理与应用
- [实践系列]Promises/A+规范
- 线程属性 pthread_attr_t
- 【计算机科学基础】存储程序原理
- 用项目案例彻底理解Spring IOC容器
- 前端开发 背景图 0229
- mysql truncate partition_实战mysql分区(PARTITION)
- git常用命令+git规范(附merge合并及冲突解决)
- PSD分层模板|解析垂直化内容电商页面设计
- 网博士自助建站系统_自助建站系统软件不一样的建站方式
- 【刷题】BZOJ 1003 [ZJOI2006]物流运输
- ajax 上传文件实例,Ajax 之文件上传
- 基于FPGA的VGA显示,简单的历程和注释(DE2-115)
- java反射之 Field对象
- 【计算机网络】路由器与交换机
- 博客整理——软件工程实践总结
- excel筛选中文或者筛选数字