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))相关推荐

  1. 常用的js代码以及自动在线生成JavaScript工具地址

    1:数组求和使用reduce let nums = [1,22,31,4,56] let sum = nums.reduce((prev, cur) => prev + cur, 0) 2:数组 ...

  2. d3.js 旋转图形_[内附完整源码和文档] 基于Qt实现的图形系统

    一.概述 本系统拟完成一个图形系统,对多种常见图形进行基本操作 系统功能 二维图形的输入:可输入或全部清除不同颜色的直线.矩形.圆.椭圆.多边形.曲线.铅笔工具 二维图形的编辑:对于直线.矩形.圆.椭 ...

  3. 二叉树剪枝_决策树,生成剪枝,CART算法

    决策树 1. 原理 1.1 模型简介 决策树是一种基本的回归和分类算法.在分类问题中,可以认为是一系列 if-then 规则的几何.决策树学通常包括三个步骤:特征选择,决策树的生成, 决策树的修剪. ...

  4. php 图片印章_在线生成实用又方便 (图片印章)

    1.Eoool在线制作LOGO.Banner.Email.Rss.签名.头像,但模板比较少,格式也比较少.- T2 W* p5 T0 D: R# M/ } http://www.eoool.com & ...

  5. 小程序 formid 生成_在线生成在线制作配音小程序

    输入文字,生成声音--在线用文字制作声音文件. 有男声.女声.童声.方言和英语,应有尽有,语音效果自然流畅. 在线配音生成器,无需下载安装,直接在线即可生成配音文件,你可以用于抖音快手等短视频里面的配 ...

  6. java二叉树镜像_给定一个二叉树,检查它是否是镜像对称的。

    原题 给定一个二叉树,检查它是否是镜像对称的. 原理 以根节点划分中心线,检查是否镜像对称. 一个指向从左节点出发,一个节点从右节点出发比较. 左节点的左孩子和右节点的右孩子比较 左节点的右孩子和右节 ...

  7. d3.js 旋转图形_几何画板第9期图形的组合型运动

    好文速递 [01]模型 | 几何动点最值,路径最值策略 [02]基于"一题一课"的数学思想方法渗透 [03]培优拔高 | 初中最值问题的19大类型 [04]一道二次函数经典题的50 ...

  8. d3.js 旋转图形_玩转数学(99)美妙的图形

    玩转 数学 美妙的图形 IPS数学名师空间站开发的"玩转数学"内容持续推送中,孩子们动脑,动口,动手,真正成为学习的主人.今天,我们一起来玩"美妙的图形"吧! ...

  9. 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 ...

最新文章

  1. 【周末阅读】工业互联网的发展历程及实现路径
  2. 激活手表显示无法登陆服务器,在Firefox中使用Nightwatch运行测试无法连接到Selenium服务器...
  3. Vue中使用Openlayers加载Geoserver发布的TileWMS
  4. 六、推荐系统原理与应用
  5. [实践系列]Promises/A+规范
  6. 线程属性 pthread_attr_t
  7. 【计算机科学基础】存储程序原理
  8. 用项目案例彻底理解Spring IOC容器
  9. 前端开发 背景图 0229
  10. mysql truncate partition_实战mysql分区(PARTITION)
  11. git常用命令+git规范(附merge合并及冲突解决)
  12. PSD分层模板|解析垂直化内容电商页面设计
  13. 网博士自助建站系统_自助建站系统软件不一样的建站方式
  14. 【刷题】BZOJ 1003 [ZJOI2006]物流运输
  15. ajax 上传文件实例,Ajax 之文件上传
  16. 基于FPGA的VGA显示,简单的历程和注释(DE2-115)
  17. java反射之 Field对象
  18. 【计算机网络】路由器与交换机
  19. 博客整理——软件工程实践总结
  20. excel筛选中文或者筛选数字

热门文章

  1. Java-Exception异常
  2. 2021 ACDU China Tour启航,首站邀您北京共话行业数据库技术实践
  3. Oracle 19.8新特性asmcmd credverify and asmcmd credfix
  4. SQL极致优化案例:利用索引特性进行max/min优化
  5. PGer看过来!亚洲最大的PG技术盛会重磅来袭!墨天轮全球同步直播!
  6. 下载丨OGG实战项目总结
  7. 一文讲透数仓临时表的用法
  8. 一个真正0基础小白学习前端开发的心路历程
  9. 开源数据库这么香,为什么我们还要下功夫自研?
  10. 【华为云技术分享】数据湖数据库,别再傻傻分不清了