如何在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
相关产品推荐
相关产品推荐

