JavaScript 种一颗二叉树
2024-10-08 03:46:24
/*
实现一颗树
结点类:Tree
包含左子树left,右子树right,根节点root,缺省为null
构造设置value
树类:Trees
构造:默认根节点为null
insert:
如果当前根节点不存在,则将传进来的节点存为根节点
如果当前根节点存在,执行InsertTree
insertTree(rootNode,newTree):
1 如果新树value小于根节点value,放到根节点的左边,如果根节点左子树已经存在,以根节点左子树为根节点继续递归
2 如果新树value大于等于根节点value,放到根节点右边,如果根节点右子树已经存在,以根节点右子树为根节点继续递归
*/
class Tree {
left = null;
right = null;
root = null;
constructor(_value) { this.value = _value;}
}
class Trees {
constructor() { this.root = null; }
insert(value) {this.root ? this.insertTree(this.root, new Tree(value)) : this.root = new Tree(value);}
insertTree(rootNode, newTree) {
newTree.value < rootNode.value ?
(rootNode.left ? this.insertTree(rootNode.left, newTree) : rootNode.left = newTree)
:
(rootNode.right ? this.insertTree(rootNode.right, newTree) : rootNode.right = newTree);
}
}
let tree = new Trees();
for (let i = 20; i > 0; i -= 2) {
tree.insert(i - 1);
tree.insert(i);
}
console.log(tree);
最新文章
- NOIP2012国王游戏
- PHPExcel中open_basedir restriction in effect的解决方法
- Java知多少(19)访问修饰符(访问控制符)
- VS生成事件
- vitamio框架
- 标准库biset
- Java虚拟机14:Java对象大小、对象内存布局及锁状态变化
- Numpy1
- ready()事件;使外置JS代码正常运行
- Bootstrap图像
- Python爬虫:HTTP协议、Requests库
- 实验:输入一篇英文新闻,以“#”结束,统计其中a-z这26个字母各出现的次数和总字符个数。(不区分大小写)
- CSS-calc 兼容写法
- web程序快速开发
- Python3基础 bool类型变量赋值
- JDBC 与 Bean Shell的使用(二)获取值,并且断言
- #001 WebStrom SVN使用技巧
- Python基础:内置函数
- 链队列的C++实现
- AWT从概念产生到完成实现只用了一个月
热门文章
- Codeforces Round #624 (Div. 3) B. WeirdSort(排序)
- $ ssh -T -v git@github.com_在本地用ssh连接github出错_git@github.com: Permission denied (publickey).
- 微信小程序 scroll-view 左右横向滑动没有效果(无法滑动)问题
- 95. 不同的二叉搜索树 II、96. 不同的二叉搜索树
- thinkphp一些经常用到的标签
- rabbitmq快速安装(实测有效)(新版)
- JS高级---案例贪吃蛇,把封装的函数移动到js文件中
- Docker Compose 使用示例
- at org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmplImpl.renderNoFlush(BackupMasterStatusTm
- 每天进步一点点------如何实现Sobel Edge Detector? (Image Processing) (C/C++)