• 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()
    
  • 相关阅读:
    ZeroMQ接口函数之 :zmq_msg_move
    ZeroMQ接口函数之 :zmq_msg_init_size
    Missing artifact org.hibernate:hibernate-core:jar:4.3.0.Final
    ezmorph将一种对象转换成另外一种对象
    Avalon Framework
    easymock单元测试跟踪工具
    pngencoder图像转换jar
    Lucene全文检索引擎
    cxf怎样提高webservice性能,及访问速度调优
    待整理-20180625
  • 原文地址:https://www.cnblogs.com/jiebba/p/7694104.html
Copyright © 2020-2023  润新知