You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dart中实现二叉树结构的可视化打印

Dart 二叉树节点可视化实现

原有节点类定义

class BinaryTreeNode<T> {
  BinaryTreeNode(this.value, {this.leftChild, this.rightChild});
  T value;
  BinaryTreeNode? leftChild;
  BinaryTreeNode? rightChild;
}

添加toString方法后的完整实现

我们为上述类添加toString方法,即可实现控制台可视化打印整棵二叉树的效果,完整代码如下:

class BinaryTreeNode<T> {
  BinaryTreeNode(this.value, {this.leftChild, this.rightChild});

  T value;
  BinaryTreeNode? leftChild;
  BinaryTreeNode? rightChild;

  @override
  String toString() {
    final buffer = StringBuffer();
    _buildTreeString(buffer, '', '', '');
    return buffer.toString();
  }

  void _buildTreeString(StringBuffer buffer, String prefix, String nodePrefix, String childPrefix) {
    buffer.write('$nodePrefix$value\n');
    if (leftChild != null && rightChild != null) {
      leftChild!._buildTreeString(buffer, childPrefix, '$childPrefix├─ ', '$childPrefix│  ');
      rightChild!._buildTreeString(buffer, childPrefix, '$childPrefix└─ ', '$childPrefix   ');
    } else if (leftChild != null) {
      leftChild!._buildTreeString(buffer, childPrefix, '$childPrefix└─ ', '$childPrefix   ');
    } else if (rightChild != null) {
      rightChild!._buildTreeString(buffer, childPrefix, '$childPrefix└─ ', '$childPrefix   ');
    }
  }
}

使用示例

void main() {
  // 构造一棵测试二叉树
  final root = BinaryTreeNode(1,
    leftChild: BinaryTreeNode(2,
      leftChild: BinaryTreeNode(4),
      rightChild: BinaryTreeNode(5),
    ),
    rightChild: BinaryTreeNode(3,
      rightChild: BinaryTreeNode(7),
    ),
  );
  // 直接打印即可输出可视化结构
  print(root);
}

输出效果

1
├─ 2
│  ├─ 4
│  └─ 5
└─ 3
   └─ 7

内容的提问来源于stack exchange,提问作者Suragch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 12:54:06