js二叉树,前序/中序/后序(最大最小值,排序)
function Node(data,left,right) {
this.left=left
this.right=right
this.data=data
}
function Btr() {
this.root = null;
}
// D:根节点 L:左子节点 R:右子节点
Btr.prototype.insert=function (data) { //生成排序的 二叉树
if(this.root==null){
this.root = new Node(data,null,null)
}else {
var current = this.root;
while(true){
if(data<current.data){
if(current.left != null){
current = current.left
}else {
current.left = new Node(data,null,null)
break
}
}else {
if(current.right != null){
current = current.right
}else {
current.right = new Node(data,null,null)
break
}
}
}
}
}
Btr.prototype.CenterScan=function () { //中序 ( LDR)
var list=[],root = this.root,left,right
while (root){
if(root.left){
left = root.left
list.unshift(root)
root.left=null
root = left
}else {
console.log(root.data)
if(root.right){
right = root.right
root.right=null
root = right
}else {
root = list.shift()
}
}
}
}
Btr.prototype.FrontScan=function () { //前序 (DLR)
var list=[],root = this.root,left,right
while (root){
if(root.data) console.log(root.data)
left = root.left
right = root.right
if(left){
root.left=null
root.data=null
list.unshift(root)
root = left
}else if(right){
root = right
}else {
root = list.shift()
}
}
}
Btr.prototype.BackScan=function () { //后序 (LRD)
var list=[],root = this.root,left,right
while (root){
left = root.left
right = root.right
if(left){
root.left=null
list.unshift(root)
root = left
}else {
if(right){
root.right = null
list.unshift(root)
root = right
}else {
console.log(root.data)
root = list.shift()
}
}
}
}
Btr.prototype.Max=function () {
var root = this.root,right
while (root){
right = root.right
if(right){
root = right
}else {
console.log(root.data)
root = null
}
}
}
Btr.prototype.Min=function () {
var root = this.root,left
while (root){
left = root.left
if(left){
root = left
}else {
console.log(root.data)
root = null
}
}
}
var btr = new Btr();
btr.insert(6)
btr.insert(2)
btr.insert(1)
btr.insert(4)
btr.insert(3)
btr.insert(5)
btr.insert(9)
btr.insert(8)
btr.insert(10)
btr.CenterScan()
js二叉树,前序/中序/后序(最大最小值,排序)的更多相关文章
- 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序
接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...
- (原)neuq oj 1022给定二叉树的前序遍历和后序遍历确定二叉树的个数
题目描述 众所周知,遍历一棵二叉树就是按某条搜索路径巡访其中每个结点,使得每个结点均被访问一次,而且仅被访问一次.最常使用的有三种遍历的方式: 1.前序遍历:若二叉树为空,则空操作:否则先访问根结点, ...
- 前、中、后序遍历随意两种是否能确定一个二叉树?理由? && 栈和队列的特点和区别
前序和后序不能确定二叉树理由:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力,因此得到这两个序列只能明确父子关系,而不能确定一个二叉树. 由二叉树的中序和前序遍历序列 ...
- 二叉树 遍历 先序 中序 后序 深度 广度 MD
Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...
- 前序+中序->后序 中序+后序->前序
前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...
- SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...
- SDUT 1489 求二叉树的先序遍历 (中序后序还原二叉树)
求二叉树的先序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description 已知一 ...
- SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度
数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...
- URAL 1136 Parliament 二叉树水题 BST后序遍历建树
二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的. 跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递 ...
随机推荐
- 02—IOC实现项目中的解耦
- SpringMvc下的文件上传
首先是springmvc.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns=&q ...
- Ngnix SSL配置(HTTP、HTTPS兼容)
一.使用阿里云提供证书 下载aliyun证书for Nginx,解压出两个文件,.pem和.key文件 在nginx安装目录Conf文件夹下新建cert文件夹,拷贝两个密钥文件 二.配置nginx 打 ...
- SQL SERVER 2008 在某表中新增一列时失败
背景:新增列语句如:“alter table 表名 add 列名 float default 0 with values”(用VS2010做网站,这句话是在C#代码里执行的) 报错提示: 警告: 已经 ...
- HDU_1505_矩阵中的最大矩形_dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1505 City Game Time Limit: 2000/1000 MS (Java/Others) ...
- jmeter接口测试小结
摘自:http://www.cnblogs.com/houzhizhe/p/6839736.html JMeter做http接口压力测试 测前准备 用JMeter做接口的压测非常方便,在压测之前我们需 ...
- vue+axios上传文件
单独上传文件: <input class="file" name="file" type="file" accept="im ...
- Redis系列(十一)--阿里云开发规范
本文主要介绍阿里云Redis的开发规范,主要从以下几个方面说明: 1.键值设计 2.命令使用 3.客户端使用 4.相关工具 一.键值设计 1.key name设计 1).[建议]:可读性和可管理性 以 ...
- 在WEB项目中调用QQ通讯组件打开QQ聊天界面
在很多WEB项目中,需要提供在线服务的功能,加上自己的联系方式,例如:QQ,不用添加QQ好友也可以交谈,那这到底是怎么实现的呢? 对于这个功能,需要提到一个组件,即“QQ通讯组件”.QQ通讯组件是一种 ...
- 【Redis】三、Redis安装及简单示例
(四)Redis安装及使用 Redis的安装比较简单,仍然和大多数的Apache开源软件一样,只需要下载,解压,配置环境变量即可.具体安装过程参考:菜鸟教程Redis安装. 安装完成后,通过r ...