为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的代码会报错?

<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);
            });


正在回答

1 回答

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

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


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么我的代码会报错?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信