接数据结构-初学二叉树创立文章后,咱们在来对二叉树进行中序排序,输入一个有序数据。
二叉树的中序遍历就是首先遍历左子树,而后拜访以后节点,最初遍历右子树。对于上面的二叉树,中序遍历后果如下:

这是思路最简略的办法,容易想到并且容易实现。递归的终止条件是以后节点是否为空。首先递归调用遍历左子树,而后拜访以后节点,最初递归调用右子树。代码如下:

       function BinaryTree(){            var Node = function(key){                this.key = key;                this.left = null;                this.right = null;            }            //插入节点 大于旧节点,放在node.right 小于旧节点,放在node.left            var insertNode = function(node,newNode){                if(newNode.key <node.key){                    if(node.left === null){                        node.left = newNode                    }else{                        insertNode(node.left,newNode)                    }                }else{                    if(node.right === null){                        node.right = newNode                    }else{                        insertNode(node.right, newNode)                    }                }            }            var root = null;            //创立节点并插到相应的地位            this.insert = function(key){                var newNode = new Node(key)                if(root === null){                    root = newNode                }else{                    insertNode(root,newNode)                }            }                        //遍历节点 左子树 父 右子树             var inOrderTraverseNode = function(node,callback){                if(node !== null){                    inOrderTraverseNode(node.left,callback)                    callback(node.key)                    inOrderTraverseNode(node.right,callback)                }            }            //中序遍历            this.inOrderTraverse = function(callback){                inOrderTraverseNode(root,callback)            }        }        var nodes = [8,3,10,1,6,14,4,7,13]        var binaryTree = new BinaryTree()        nodes.forEach(key =>{            binaryTree.insert(key)        })        //回调函数只做打印以后值        var callback = function(key){            console.log(key)        }        binaryTree.inOrderTraverse(callback)