Tree in Typecsript

by Preetha Srinivasan

HTML

<link rel="stylesheet" href="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.css">
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine.js"></script>
<script src="https://cdn.jsdelivr.net/jasmine/1.3.1/jasmine-html.js"></script>

TypeScript

class Node {

    data: number;
    left: Node;
    right: Node;

    constructor(data: number) {
        this.data = data;
        this.left = null;
        this.right = null;
    }

}

class Tree {

    constructor() {
        this.root = null;
    }

    insertRec(root: Node, data: number) {
        if (root == null) {
            root = new Node(data);
            return root;
        }

        /* Otherwise, recur down the tree */
        if (data < root.data)
            root.left = this.insertRec(root.left, data);
        else if (data > root.data)
            root.right = this.insertRec(root.right, data);

        /* return the (unchanged) node pointer */
        return root;

    }

    insert(data: number) {
        this.root = this.insertRec(this.root, data);
    }

    inorder(result:[]) {
        this.inOrderTraversal(this.root,result);
    }

    inOrderTraversal(root: Node,result:[]) {
        if (root != null) {
            this.inOrderTraversal(root.left,result);
            console.log(root.data);
            result.push(root.data);
            this.inOrderTraversal(root.right,result);
        }
    }

    preorder(result:[]) {
        this.preOrderTraversal(this.root,result);
    }

    preOrderTraversal(root: Node,result:[]) {
        if (root != null) {
            console.log(root.data);
            result.push(root.data);
            this.preOrderTraversal(root.left,result);
            this.preOrderTraversal(root.right,result);
        }
    }

    postorder(result:[]) {
        this.postOrderTraversal(this.root,result);
    }

    postOrderTraversal(root: Node,result:[]) {
        if (root != null) {
            this.postOrderTraversal(root.left,result);
            this.postOrderTraversal(root.right,result);
            result.push(root.data);
            console.log(root.data);
        }
    }
    
    levelorder(result:[]) {
      this.levelOrderTraversal(this.root,result);
    }
    
    levelOrderTraversal(root:Node,result:[]) {
    ...