zoukankan      html  css  js  c++  java
  • [Algorithm] Tree Width with Level Width

    // --- Directions
    // Given the root node of a tree, return
    // an array where each element is the width
    // of the tree at each level.
    // --- Example
    // Given:
    //     0
    //   / |  
    // 1   2   3
    // |       |
    // 4       5
    // Answer: [1, 3, 2]
    function levelWidth(root) {
      let counts = [0];
      let levels = [root, "$end$"];
      // [1, 3, 2]
      // ["e"]
    
      while (levels.length > 1) {
        const current = levels.shift();
        if (current === "$end$") {
          counts[counts.length] = 0;
          levels.push("$end$");
        } else {
          const { children } = current;
          for (let node of children) {
            levels.push(node);
          }
          counts[counts.length - 1]++;
        }
      }
    
      return counts;
    }
    
    module.exports = levelWidth;

    Test:

    const Node = require('./node');
    const levelWidth = require('./index');
    
    test('levelWidth is a function', () => {
      expect(typeof levelWidth).toEqual('function');
    });
    
    test('levelWidth returns number of nodes at widest point', () => {
      const root = new Node(0);
      root.add(1);
      root.add(2);
      root.add(3);
      root.children[0].add(4);
      root.children[2].add(5);
    
      expect(levelWidth(root)).toEqual([1, 3, 2]);
    });
    
    test('levelWidth returns number of nodes at widest point', () => {
      const root = new Node(0);
      root.add(1);
      root.children[0].add(2);
      root.children[0].add(3);
      root.children[0].children[0].add(4);
    
      expect(levelWidth(root)).toEqual([1, 1, 2, 1]);
    });
  • 相关阅读:
    Node Exporter监控指标
    Prometheus组件介绍
    记录阿里云安全组设置遇到的奇葩问题--出口ip
    7.prometheus监控多个MySQL实例
    使用Docker Compose部署SpringCloud项目docker-compose.yml文件示例
    Docker Compose的安装及命令补全
    如何调试 Docker
    Dockerfile 最佳实践
    Docker 命令查询
    Docker常见问题
  • 原文地址:https://www.cnblogs.com/Answer1215/p/11336949.html
Copyright © 2011-2022 走看看