2.0.3 • Published 6 months ago

binary-tree-typed v2.0.3

Weekly downloads
-
License
MIT
Repository
github
Last release
6 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

6 months ago

2.0.1

7 months ago

2.0.0

9 months ago

1.54.3

9 months ago

1.54.2

9 months ago

1.54.1

9 months ago

1.53.4

10 months ago

1.53.3

10 months ago

1.53.6

10 months ago

1.53.5

10 months ago

1.53.8

9 months ago

1.53.7

9 months ago

1.54.0

9 months ago

1.53.2

10 months ago

1.53.1

10 months ago

1.52.5

10 months ago

1.52.6

10 months ago

1.52.9

10 months ago

1.52.8

10 months ago

1.53.0

10 months ago

1.52.4

11 months ago

1.52.3

12 months ago

1.52.2

1 year ago

1.52.1

1 year ago

1.52.0

2 years ago

1.51.9

2 years ago

1.51.8

2 years ago

1.51.7

2 years ago

1.51.6

2 years ago

1.51.5

2 years ago

1.51.4

2 years ago

1.51.0

2 years ago

1.51.2

2 years ago

1.51.1

2 years ago

1.51.3

2 years ago

1.50.9

2 years ago

1.50.8

2 years ago

1.50.7

2 years ago

1.50.6

2 years ago

1.50.5

2 years ago

1.50.4

2 years ago

1.50.3

2 years ago

1.50.2

2 years 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