如何在C# BinaryTree构造函数中仅生成一次可视化二叉树?
解决方案
核心思路是将打印操作从节点添加的循环内部移至所有节点构建完成之后,无需修改BTreePrinter类,仅调整BinaryTree构造函数的逻辑即可。
修改前的构造函数(问题代码)
public BinaryTree(int[] values) { foreach (var val in values) { AddNode(val); BTreePrinter.Print(Root); // 每次添加节点后立即打印,导致重复输出 } }
修改后的构造函数(解决代码)
public BinaryTree(int[] values) { // 先遍历数组完成所有节点的添加 foreach (var val in values) { AddNode(val); } // 所有节点添加完成后,仅调用一次打印 BTreePrinter.Print(Root); }
说明
- 调整后,构造函数会先完成整个二叉树的节点构建,再调用
BTreePrinter.Print输出完整的可视化树,避免了每次添加节点后的重复打印。 - 完全保留
BTreePrinter类的原有实现,仅改动BinaryTree构造函数的执行顺序。
内容的提问来源于stack exchange,提问作者user8512043
相关产品推荐
相关产品推荐

