java - 如何用Java实现树格式?

标签 java tree nodes

我在将这部分代码写入树格式时遇到问题。我希望它输出为

   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);
}

最佳答案

请检查此Print a binary tree in a pretty way (或者) 您也可以查看此链接 https://www.geeksforgeeks.org/print-binary-tree-2-dimensions其中它以从左到右的顺序而不是从上到下的顺序打印树,等效的 java 代码如下所示,其中将 root 值作为树的根节点传递,并将空间传递为 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); 
} 

关于java - 如何用Java实现树格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53158402/

相关文章:

java - 我怎样才能从它的大小找到大致的歌曲时间

java - 使用 AngularJS 时 Java Web 框架的必要性

java - 生成两个不同大小的素数

C# XNA A* 寻路敌人卡在对面的墙上

c++ - 如何检测 Maya 中的节点名称更改

java - GUI Action Listener JAVA 中的线程 sleep

tree - 绘制树时间线(进化历史)

java - 创建二叉搜索树

algorithm - 树中 2 个节点之间值小于 k 的奇数边之和

javascript - 如何仅将没有文本节点的类型的元素设置为 sibling ?