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后序遍历的特型,找到最后那个数就是根,向前找,比它小的那块就是他的左儿子,比它大的那块就是右儿子,然后递 ...
随机推荐
- Using 10053 Trace Events and get outline
When it comes to performance tuning, we can spend time on one or both ends of the problem. On the &q ...
- C# 文件压缩方法
using System; using System.IO; using System.IO.Packaging; namespace Utility { public class ZipHelper ...
- [译]HTTP POSTing
HTTP POSTing We get many questions regarding how to issue HTTP POSTs with libcurl the proper way. Th ...
- WCF学习笔记(2)-WCF的通讯过程
一.WCF中的ABC 场景:公司让你送一份合同文件,送文件的过程你可以选择的交通方式有打的,地铁或公交. 到了对方公司后,你要找到某负责人,并且要一份收到合同文件的回执和相应文件 要完成这项工作任务主 ...
- datagrid 选中某行,翻页再翻回来,发现选中的行没有选中
不管有没有设置复选框,其实都是一样的,都是idField属性没有设置,加上去即可. $(function(){ $('#dg').datagrid({ url:'ContactServlet', to ...
- Farseer.net轻量级开源框架 入门篇:删除数据详解
导航 目 录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 修改数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 查询数据详解 ...
- javascript按钮点击事件问题
今天弄了个小测试,结果发现了点问题. 就是有一个按钮的点击事件,页面加载时候没反应,只有F12启用开发人员工具的时候才有反应.后来反复测试发现名字起的不太合理 function onclick(){ ...
- Java线程的sleep方法
sleep方法的签名: public static void sleep (long millis) sleep方法是Thread类的一个方法,作用是:在指定的毫秒内让正在执行的线程休眠(暂停执行) ...
- 扩增子分析解读6进化树 Alpha Beta多样性
分析前准备 # 进入工作目录 cd example_PE250 上一节回顾:我们的OTU获得了物种注释,并学习OTU表的各种操作————添加信息,格式转换,筛选信息. 接下来我们学习对OTU序列的 ...
- 如何在mybatis中引用java中的常量和方法
转自:http://www.68idc.cn/help/jiabenmake/qita/20140821125261.html 在mybatis的映射xml文件调用java类的方法: 1. SELEC ...