2.0.3 • Published 4 months ago

binary-tree-typed v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

NPM GitHub top language npm eslint npm bundle size npm bundle size npm

What

Brief

This is a standalone Binary Tree data structure from the data-structure-typed collection. If you wish to access more data structures or advanced features, you can transition to directly installing the complete data-structure-typed package

How

install

npm

npm i binary-tree-typed --save

yarn

yarn add binary-tree-typed

snippet

determine loan approval using a decision tree

    // Decision tree structure
    const loanDecisionTree = new BinaryTree<string>(
      ['stableIncome', 'goodCredit', 'Rejected', 'Approved', 'Rejected'],
      { isDuplicate: true }
    );

    function determineLoanApproval(
      node?: BinaryTreeNode<string> | null,
      conditions?: { [key: string]: boolean }
    ): string {
      if (!node) throw new Error('Invalid node');

      // If it's a leaf node, return the decision result
      if (!node.left && !node.right) return node.key;

      // Check if a valid condition exists for the current node's key
      return conditions?.[node.key]
        ? determineLoanApproval(node.left, conditions)
        : determineLoanApproval(node.right, conditions);
    }

    // Test case 1: Stable income and good credit score
    console.log(determineLoanApproval(loanDecisionTree.root, { stableIncome: true, goodCredit: true })); // 'Approved'

    // Test case 2: Stable income but poor credit score
    console.log(determineLoanApproval(loanDecisionTree.root, { stableIncome: true, goodCredit: false })); // 'Rejected'

    // Test case 3: No stable income
    console.log(determineLoanApproval(loanDecisionTree.root, { stableIncome: false, goodCredit: true })); // 'Rejected'

    // Test case 4: No stable income and poor credit score
    console.log(determineLoanApproval(loanDecisionTree.root, { stableIncome: false, goodCredit: false })); // 'Rejected'

evaluate the arithmetic expression represented by the binary tree

    const expressionTree = new BinaryTree<number | string>(['+', 3, '*', null, null, 5, '-', null, null, 2, 8]);

    function evaluate(node?: BinaryTreeNode<number | string> | null): number {
      if (!node) return 0;

      if (typeof node.key === 'number') return node.key;

      const leftValue = evaluate(node.left); // Evaluate the left subtree
      const rightValue = evaluate(node.right); // Evaluate the right subtree

      // Perform the operation based on the current node's operator
      switch (node.key) {
        case '+':
          return leftValue + rightValue;
        case '-':
          return leftValue - rightValue;
        case '*':
          return leftValue * rightValue;
        case '/':
          return rightValue !== 0 ? leftValue / rightValue : 0; // Handle division by zero
        default:
          throw new Error(`Unsupported operator: ${node.key}`);
      }
    }

    console.log(evaluate(expressionTree.root)); // -27

API docs & Examples

API Docs

Live Examples

Examples Repository

Data Structures

Standard library data structure comparison

Benchmark

Built-in classic algorithms

Software Engineering Design Standards

2.0.3

4 months ago

2.0.1

5 months ago

2.0.0

7 months ago

1.54.3

7 months ago

1.54.2

7 months ago

1.54.1

7 months ago

1.53.4

7 months ago

1.53.3

7 months ago

1.53.6

7 months ago

1.53.5

7 months ago

1.53.8

7 months ago

1.53.7

7 months ago

1.54.0

7 months ago

1.53.2

7 months ago

1.53.1

8 months ago

1.52.5

8 months ago

1.52.6

8 months ago

1.52.9

8 months ago

1.52.8

8 months ago

1.53.0

8 months ago

1.52.4

9 months ago

1.52.3

10 months ago

1.52.2

10 months ago

1.52.1

11 months ago

1.52.0

1 year ago

1.51.9

1 year ago

1.51.8

1 year ago

1.51.7

1 year ago

1.51.6

1 year ago

1.51.5

1 year ago

1.51.4

1 year ago

1.51.0

1 year ago

1.51.2

1 year ago

1.51.1

1 year ago

1.51.3

1 year ago

1.50.9

1 year ago

1.50.8

1 year ago

1.50.7

1 year ago

1.50.6

1 year ago

1.50.5

1 year ago

1.50.4

1 year ago

1.50.3

1 year ago

1.50.2

1 year ago

1.50.1

2 years ago

1.50.0

2 years ago

1.49.7

2 years ago

1.49.6

2 years ago

1.49.9

2 years ago

1.49.8

2 years ago

1.49.5

2 years ago

1.49.4

2 years ago

1.49.3

2 years ago

1.49.1

2 years ago

1.49.2

2 years ago

1.49.0

2 years ago

1.48.9

2 years ago

1.48.8

2 years ago

1.48.7

2 years ago

1.48.6

2 years ago

1.48.5

2 years ago

1.48.4

2 years ago

1.48.3

2 years ago

1.48.2

2 years ago

1.48.1

2 years ago

1.48.0

2 years ago

1.47.9

2 years ago

1.47.8

2 years ago

1.47.7

2 years ago

1.47.6

2 years ago

1.47.5

2 years ago

1.47.4

2 years ago

1.47.3

2 years ago

1.47.2

2 years ago

1.47.1

2 years ago

1.46.8

2 years ago

1.46.7

2 years ago

1.46.6

2 years ago

1.46.5

2 years ago

1.46.3

2 years ago

1.46.2

2 years ago

1.46.1

2 years ago

1.45.3

2 years ago

1.45.2

2 years ago

1.45.1

2 years ago

1.45.0

2 years ago

1.44.1

2 years ago

1.44.0

2 years ago

1.43.3

2 years ago

1.43.1

2 years ago

1.43.0

2 years ago

1.42.9

2 years ago

1.42.8

2 years ago

1.42.7

2 years ago

1.42.6

2 years ago

1.42.5

2 years ago

1.42.4

2 years ago

1.42.3

2 years ago

1.42.2

2 years ago

1.42.1

2 years ago

1.42.0

2 years ago

1.41.9

2 years ago

1.41.8

2 years ago

1.41.7

2 years ago

1.41.6

2 years ago

1.41.5

2 years ago

1.41.4

2 years ago

1.41.3

2 years ago

1.41.2

2 years ago

1.41.1

2 years ago

1.41.0

2 years ago

1.40.0

2 years ago

1.39.6

2 years ago

1.39.5

2 years ago

1.39.4

2 years ago

1.39.3

2 years ago

1.39.2

2 years ago

1.39.1

2 years ago

1.39.0

2 years ago

1.38.9

2 years ago

1.38.8

2 years ago

1.38.7

2 years ago

1.38.6

2 years ago

1.38.5

2 years ago

1.38.4

2 years ago

1.38.3

2 years ago

1.38.2

2 years ago

1.38.1

2 years ago

1.38.0

2 years ago

1.37.9

2 years ago

1.37.8

2 years ago

1.37.7

2 years ago

1.37.6

2 years ago

1.37.5

2 years ago

1.37.4

2 years ago

1.37.3

2 years ago

1.37.2

2 years ago

1.37.0

2 years ago

1.36.9

2 years ago

1.36.8

2 years ago

1.36.6

2 years ago

1.36.5

2 years ago

1.36.4

2 years ago

1.36.3

2 years ago

1.36.2

2 years ago

1.36.0

2 years ago

1.40.0-rc

2 years ago

1.35.1

2 years ago

1.35.0

2 years ago

1.34.9

2 years ago

1.34.8

2 years ago

1.34.7

2 years ago

1.34.6

2 years ago

1.34.5

2 years ago

1.34.4

2 years ago

1.34.3

2 years ago

1.34.2

2 years ago

1.34.1

2 years ago

1.33.8

2 years ago

1.33.7

2 years ago

1.33.6

2 years ago

1.32.9

2 years ago

1.32.2

2 years ago

1.32.0

2 years ago

1.31.0

2 years ago

1.3.3

2 years ago

1.3.2

2 years ago

1.3.1

2 years ago

1.21.4

2 years ago

1.21.3

2 years ago

1.21.2

2 years ago

1.21.0

2 years ago

1.20.0

2 years ago

1.19.9

2 years ago

1.19.7

2 years ago

1.19.6

2 years ago

1.19.5

2 years ago

1.19.3

2 years ago

1.19.0

2 years ago