[Algorithm] Tree Width with Level Width

Posted answer1215

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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]);
);

 

以上是关于[Algorithm] Tree Width with Level Width的主要内容,如果未能解决你的问题,请参考以下文章

[Algorithm] Universal Value Tree Problem

[Algorithm] Construct String from Binary Tree

[Algorithm] 7. Serialize and Deserialize Binary Tree

[Algorithm][Greedy] Kruskal’s Minimum Spanning Tree Algorithm

R语言构建决策树模型的算法步骤和流程(decision tree algorithm tree build process or steps)

190218-Python(str) Algorithm(Red-black tree update)