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二叉树,前序/中序/后序(最大最小值,排序)的更多相关文章

  1. 算法进阶面试题03——构造数组的MaxTree、最大子矩阵的大小、2017京东环形烽火台问题、介绍Morris遍历并实现前序/中序/后序

    接着第二课的内容和带点第三课的内容. (回顾)准备一个栈,从大到小排列,具体参考上一课.... 构造数组的MaxTree [题目] 定义二叉树如下: public class Node{ public ...

  2. (原)neuq oj 1022给定二叉树的前序遍历和后序遍历确定二叉树的个数

    题目描述 众所周知,遍历一棵二叉树就是按某条搜索路径巡访其中每个结点,使得每个结点均被访问一次,而且仅被访问一次.最常使用的有三种遍历的方式: 1.前序遍历:若二叉树为空,则空操作:否则先访问根结点, ...

  3. 前、中、后序遍历随意两种是否能确定一个二叉树?理由? && 栈和队列的特点和区别

    前序和后序不能确定二叉树理由:前序和后序在本质上都是将父节点与子结点进行分离,但并没有指明左子树和右子树的能力,因此得到这两个序列只能明确父子关系,而不能确定一个二叉树. 由二叉树的中序和前序遍历序列 ...

  4. 二叉树 遍历 先序 中序 后序 深度 广度 MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  5. 前序+中序->后序 中序+后序->前序

    前序+中序->后序 #include <bits/stdc++.h> using namespace std; struct node { char elem; node* l; n ...

  6. SDUT OJ 数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Submit Statistic Discuss Probl ...

  7. SDUT 1489 求二叉树的先序遍历 (中序后序还原二叉树)

    求二叉树的先序遍历 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Discuss Problem Description  已知一 ...

  8. SDUT-2804_数据结构实验之二叉树八:(中序后序)求二叉树的深度

    数据结构实验之二叉树八:(中序后序)求二叉树的深度 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 已知一颗二叉树的中序 ...

  9. URAL 1136 Parliament 二叉树水题 BST后序遍历建树

    二叉树水题,特别是昨天刚做完二叉树用中序后序建树,现在来做这个很快的. 跟昨天那题差不多,BST后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递 ...

随机推荐

  1. 三分 HDOJ 3714 Error Curves

    题目传送门 /* 三分:凹(凸)函数求极值 */ #include <cstdio> #include <algorithm> #include <cstring> ...

  2. 二分+RMQ/双端队列/尺取法 HDOJ 5289 Assignment

    题目传送门 /* 题意:问有几个区间最大值-最小值 < k 解法1:枚举左端点,二分右端点,用RMQ(或树状数组)求区间最值,O(nlog(n))复杂度 解法2:用单调队列维护最值,O(n)复杂 ...

  3. [译]Cookies Without Chocolate Chips

    Cookies Without Chocolate Chips In the HTTP sense, a cookie is a name with an associated value. A se ...

  4. Oracle数据库数据显示乱码问题解决方法。

    一.问题描述:       在将其它数据库的数据导出文件导入本地新建数据库时,所导入的数据全部是乱码,一般表现为数据表中列的值类似于"?????",即内容大部分为?的表现形式.初步 ...

  5. 6.12mysql自己的数据库的作用

  6. dubbo与zookeeper学习中的问题

    环境: spring5.1.5 dubbo 2.6.2 异常信息: java.lang.NoClassDefFoundError: org/apache/curator/RetryPolicy at ...

  7. android studio使用中碰到Failure [INSTALL_FAILED_OLDER_SDK] 问题

    第一次使用Android studio开发.直接新建一个默认项目运行出现:Failure [INSTALL_FAILED_OLDER_SDK] , 网上很多人说修改build.gradle中的mins ...

  8. VMWare 支持的网络连接类型 (VMWare Virtual Network Connection Types)

  9. spring 实例 bean 的方式

    一.使用构造器实例化: <bean id="personService" class="cn.mytest.service.impl.PersonServiceBe ...

  10. oracle数据库子查询的结果需要使用多次解决办法

    with c as (select a.trandt,sum(a.tranam) tranam from tran a group by a.trandt )--将子查询抽取出来,以后可以直接用.该方 ...