java - 如何在 Java 中实现树形格式?
问题描述
我无法将这部分代码写成树格式。我希望它输出为
x
x x
x x
但它输出为
x
x
x
....
如何在我的代码中添加缩进和空格?在空节点的情况下,输入星号或任何符号?
public void insert(int value)
{
Node n = new Node(value);
if(root == null)
root = n;
else
{
Node parent = root;
while(parent != null)
{
if(value < parent.data)
{
if(parent.left == null)
{
parent.left = n;
return;
}
else
{
parent = parent.left;
}
}
else
{
if(parent.right == null)
{
parent.right = n;
return;
}
else
{
parent = parent.right;
}
}
}
}
}
private void inOrder(Node n)
{
if(n == null)
return;
inOrder(n.left);
System.out.println(n.data + " ");
inOrder(n.right);
}
public void printInorder()
{
inOrder(root);
}
解决方案
请检查此以漂亮的方式打印二叉树 (或)您也可以检查此链接https://www.geeksforgeeks.org/print-binary-tree-2-dimensions从左到右打印树顺序而不是从上到下,等效的 java 代码如下,其中将根值作为树的根节点传递,空间作为 0。
void print2DUtil(Node root, int space)
{
// Base case
if (root == NULL)
return;
// Increase distance between levels
space += COUNT;
// Process right child first
print2DUtil(root.right, space);
// Print current node after space
// count
printf("\n");
for (int i = COUNT; i < space; i++)
printf(" ");
printf("%d\n", root.data);
// Process left child
print2DUtil(root.left, space);
}
推荐阅读
- uitableview - 在 iOS 13 上构建时,UITableViewCell selectedBackgroundView 的颜色不可见
- haskell - 如何使用 Conduit 组合器实现类似 takeWhile 的功能?
- java - Android 应用程序崩溃 java.lang.RuntimeException
- macos - 在 Visual Studio for Mac (Xamarin) 中签署 Mac 应用程序
- java-11 - 将 sun.reflect 包与 openjdk11 一起使用
- kotlin - 使用镜头更改数据类的多个属性
- perl - 在 perl 的映射中使用函数名
- amazon-web-services - 使用“Alexa”一词时,Alexa 技能未打开
- pandoc - Pandoc tex to html:如何处理自定义环境?
- python - 如何将 twurl 导入 python?