首页 > 解决方案 > 修改引用值而不是引用值

问题描述

这是代码。它是二叉搜索树的插入函数。

    let bst = new class BinarySearchTree {
    constructor() {
        this.root = null; 
    }
    insert(value) {
        let newNode = new Node(value);
        let current = this.root; //this doesn't assign current as a reference, instead it assigns it to null
        let left = (current?.left) ? current.left : null;
        let right = (current?.right) ? current.right : null;
        while (current) {
            current = (newNode.value <= current.value) ? left : right;
            left = (current?.left) ? current.left : null;
            right = (current?.left) ? current.right : null;
        }
        current = newNode; //this line assigns current to reference 
        return current;
    }

current用来引用当前节点。问题是当我尝试将值设置current为 newNode 时,它​​不会将值分配给current正在引用的内容(我假设是因为它不是引用)。相反,它设置current为 reference newNode。是否可以将电流设置为this.root which = null.

这就是插入的方式

bst.insert(250);

这是类节点:

class Node {
    constructor(value) {
        this.value = value;
        this.right = null;
        this.left = null;
    }
}

标签: javascript

解决方案


    let bst = new class BinarySearchTree {
    constructor() {
        this.root = null; 
    }
    insert(value) {
        let newNode = new Node(value);
        let current = this.root;
        let left = current?.left
        let right = current?.right
        while (current) {
            //your code will never reach here until second call
            current = (newNode.value <= current.value) ? left : right;
            left = (current?.left) ? current.left : null;
            right = (current?.left) ? current.right : null;
        }
        this.root = newNode;//setting current will not effect this.root, so you will not be able to reach current on next call if you not use like this
        return current;
    }

推荐阅读