问答详情
源自:1-4 二叉树创建的代码实现

为什么我的代码会报错?

<script>
//            构建一个二叉树
            function BinaryTree() {
                //创建一个节点
                var Node = function(key){
                    this.key = key;//节点值
                    this.left=null;//节点的左儿子
                    this.right=null;//节点的右儿子
                };
                var root = null;//根节点
                var insertNode = function(oldNode,newNode){//插入节点函数
                    if(newNode.key<oldNode.key){//放入左节点
                        if(oldNode.left===null){
                            oldNode.left=newNode;
                        }else{
                            insertNode(oldNode.left,newNode);//递归
                        }
                    }else{
                        insertNode(oldNode.right,newNode);
                    }
                }
                this.insert=function(key){//定义了一个自定义函数insert()
                    var newNode=new Node(key);//newNode是Node的一个实例
                    if(root===null){
                        root=newNode;
                    }else{
                        insertNode(root,newNode);
                    }
                };
            }
            var nodes=[8,3,10,1,6,14,4,7,13];
            var binaryTree=new BinaryTree();//binaryTree是BinaryTree的实例
            nodes.forEach(function(key){
                binaryTree.insert(key);
            });


提问者:qq_一顾倾人城_0 2018-08-12 01:53

个回答

  • Joeyscat
    2018-08-12 23:26:35

    第18行的else插入右节点,没有空判断

    if(oldNode.right===null){
        oldNode.right = newNode;
    } else {
        insertNode(oldNode.right, newNode);
    }