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二叉树,前序/中序/后序(最大最小值,排序)的主要内容,如果未能解决你的问题,请参考以下文章

面试---算法面试

二叉树遍历问题(前序,中序,后序)

怎么根据二叉树的前序,中序,确定它的后序

输入后序和中序,构造二叉树,并输出该二叉树的层序前序中序后序遍历结构;输入后序和中序,构造二叉树,并输出该二叉树的层序前序中序后序遍历结构

二叉树的前序中序后序遍历访问顺序是怎么回事啊?搞不懂

数据结构-二叉树以及前序中序后序遍历(python实现)