js二叉樹,前序/中序/後序(最大最小值,排序)
阿新 • • 發佈:2017-10-19
data nod can ole right unshift func pro node
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二叉樹,前序/中序/後序(最大最小值,排序)