js二叉树,前序/中序/后序(最大最小值,排序)
Posted 小结巴巴吧
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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二叉树,前序/中序/后序(最大最小值,排序)的主要内容,如果未能解决你的问题,请参考以下文章
输入后序和中序,构造二叉树,并输出该二叉树的层序前序中序后序遍历结构;输入后序和中序,构造二叉树,并输出该二叉树的层序前序中序后序遍历结构