首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Dart中打印二叉树图?

在Dart中打印二叉树图可以通过递归遍历二叉树的方式来实现。以下是一个示例代码:

代码语言:txt
复制
class TreeNode {
  int val;
  TreeNode left;
  TreeNode right;

  TreeNode(this.val, [this.left, this.right]);
}

void printBinaryTree(TreeNode root, [int level = 0, String branch = '']) {
  if (root == null) {
    return;
  }

  final indent = ' ' * level;
  print('$indent$branch${root.val}');

  if (root.left != null) {
    printBinaryTree(root.left, level + 1, '├─左: ');
  }

  if (root.right != null) {
    printBinaryTree(root.right, level + 1, '└─右: ');
  }
}

void main() {
  // 构造一个二叉树
  final root = TreeNode(1);
  final node1 = TreeNode(2);
  final node2 = TreeNode(3);
  final node3 = TreeNode(4);
  final node4 = TreeNode(5);
  final node5 = TreeNode(6);

  root.left = node1;
  root.right = node2;
  node1.left = node3;
  node1.right = node4;
  node2.right = node5;

  // 打印二叉树
  printBinaryTree(root);
}

以上代码中,首先定义了一个TreeNode类,用于表示二叉树的节点。节点包含一个整数值以及左右子节点。然后,定义了printBinaryTree函数,该函数接收一个二叉树的根节点、当前层级、以及表示节点方向的前缀字符串。函数通过递归遍历二叉树,并根据层级和节点方向打印出节点值。最后,在main函数中构造了一个示例二叉树,并调用printBinaryTree函数进行打印。

运行以上代码,输出结果如下:

代码语言:txt
复制
1
├─左: 2
│     ├─左: 4
│     └─右: 5
└─右: 3
      └─右: 6

这样,就可以在Dart中打印二叉树图了。

注意:在答案中,我尽量避免提及具体的云计算品牌商,只给出了完整的答案内容。如有需要,可以根据实际情况添加相关品牌商的信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

【Java数据结构】二叉树详解(一)

结点的度:一个结点含有子树的个数称为该结点的度; 如上图:A的度为6 树的度:一棵树中,所有结点度的最大值称为树的度; 如上图:树的度为6 叶子结点或终端结点:度为0的结点称为叶结点; 如上图:B、C、H、I...等节点为叶结点 双亲结点或父结点:若一个结点含有子结点,则这个结点称为其子结点的父结点; 如上图:A是B的父结点 孩子结点或子结点:一个结点含有的子树的根结点称为该结点的子结点; 如上图:B是A的孩子结点 根结点:一棵树中,没有双亲结点的结点;如上图:A 结点的层次:从根开始定义起,根为第1层,根的子结点为第2层,以此类推 树的高度或深度:树中结点的最大层次; 如上图:树的高度为4 树的如下概念只需了解,我们只要知道是什么意思即可: 非终端结点或分支结点:度不为0的结点; 如上图:D、E、F、G...等节点为分支结点 兄弟结点:具有相同父结点的结点互称为兄弟结点; 如上图:B、C是兄弟结点 堂兄弟结点:双亲在同一层的结点互为堂兄弟;如上图:H、I互为堂兄弟结点 结点的祖先:从根到该结点所经分支上的所有结点;如上图:A是所有结点的祖先 子孙:以某结点为根的子树中任一结点都称为该结点的子孙。如上图:所有结点都是A的子孙 森林:由m(m>=0)棵互不相交的树组成的集合称为森林

01
领券