简体   繁体   中英

Getting a reference error “ReferenceError: insertLevelOrder is not defined” on function defined inside a class

I was trying to implements a Full Binary Tree usiing javaScript and I got the error of ReferenceError: insertLevelOrder is not defined here is my code:


// given array in level order fashion 
class Node {
    constructor(data, left = null, right = null) {
        this.data = data;
        this.left = left;
        this.right = right;
    }
};

class Tree {
    constructor() {
        this.root = null;
    }

    // Function to insert nodes in level order 
    insertLevelOrder(arr, root, i) 
    { 
        // Base case for recursion 
        if (i < arr.length) { 
            var temp = new Node(arr[i]); 
            root = temp; 

            // insert left child 
            root.left = insertLevelOrder(arr, root.left, 2 * i + 1); 

            // insert right child 
            root.right = insertLevelOrder(arr, root.right, 2 * i + 2); 
        } 
        return root; 
    } 

    // Function to print tree nodes in InOrder fashion 
    inOrder(root) 
    { 
        if (root != null) { 
            inOrder(root.left); 
            console.log(root.data + " "); 
            inOrder(root.right); 
        } 
    } 

} 

var tree = new Tree();
var arr = new Array(1, 2, 3, 4, 5, 6, 6, 6, 6 );
tree.root = tree.insertLevelOrder(arr, tree.root, 0); 

I have added some code at the end to test the algo I'm not sure whats wrong

Since you are trying to recursively call insertLevelOrder inside itself, you should call it as a method of the current instance (via this.insertLevelOrder ):

root.left = this.insertLevelOrder(arr, root.left, 2 * i + 1); 
root.right = this.insertLevelOrder(arr, root.right, 2 * i + 2);

inside the class you have to use this like this.insertLevelOrder(...

I have removed your comments in the code and added comments where you have to add this.

 class Node { constructor(data, left = null, right = null) { this.data = data; this.left = left; this.right = right; } }; class Tree { constructor() { this.root = null; } insertLevelOrder(arr, root, i) { if (i < arr.length) { var temp = new Node(arr[i]); root = temp; // you need to add this. root.left = this.insertLevelOrder(arr, root.left, 2 * i + 1); // you need to add this. root.right = this.insertLevelOrder(arr, root.right, 2 * i + 2); } return root; } inOrder(root) { if (root != null) { this.inOrder(root.left); // you need to add this. console.log(root.data + " "); this.inOrder(root.right); // you need to add this. } } } var tree = new Tree(); var arr = new Array(1, 2, 3, 4, 5, 6, 6, 6, 6 ); tree.root = tree.insertLevelOrder(arr, tree.root, 0); 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM