找回密码
 快速注册
搜索
查看: 39|回复: 0

树的图示

[复制链接]

3149

主题

8386

回帖

6万

积分

$\style{scale:11;fill:#eff}꩜$

积分
65391
QQ

显示全部楼层

hbghlyj 发表于 2023-7-19 02:35 |阅读模式
是一种数据结构。输入树,用Javascript输出显示层次关系的字符串
  1. class TreeNode {
  2.   constructor(value) {
  3.     this.value = value;
  4.     this.children = [];
  5.   }
  6.   addChild(child) {
  7.     this.children.push(child);
  8.   }
  9. }
  10. function convertTreeToDiagram(node, prefix = '', isLast = true) {
  11.   let diagram = prefix;
  12.   if (isLast) {
  13.     diagram += 'o-';
  14.     prefix += '  ';
  15.   } else {
  16.     diagram += 'o-';
  17.     prefix += '| ';
  18.   }
  19.   diagram += node.value + '\n';
  20.   const childCount = node.children.length;
  21.   for (let i = 0; i < childCount; i++) {
  22.     const child = node.children[i];
  23.     const isLastChild = i === childCount - 1;
  24.     diagram += convertTreeToDiagram(child, prefix, isLastChild);
  25.   }
  26.   return diagram;
  27. }
复制代码

用例
  1. const tree = new TreeNode('A');
  2. const childB = new TreeNode('B');
  3. const childC = new TreeNode('C');
  4. const childD = new TreeNode('D');
  5. childB.addChild(new TreeNode('E'));
  6. childB.addChild(new TreeNode('F'));
  7. childD.addChild(new TreeNode('G'));
  8. tree.addChild(childB);
  9. tree.addChild(childC);
  10. tree.addChild(childD);
  11. const diagram = convertTreeToDiagram(tree);
  12. console.log(diagram);
复制代码

o-A
  o-B
  | o-E
  | o-F
  o-C
  o-D
    o-G

文件系统:
The-directory-tree-that-we-are-going-to-visualize-with-our-tool-as-visualized-by.png

手机版|悠闲数学娱乐论坛(第3版)

GMT+8, 2025-3-4 15:44

Powered by Discuz!

× 快速回复 返回顶部 返回列表