Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何像lisp语句一样打印函数/终端的二叉树?_Java_Binary Tree - Fatal编程技术网

Java 如何像lisp语句一样打印函数/终端的二叉树?

Java 如何像lisp语句一样打印函数/终端的二叉树?,java,binary-tree,Java,Binary Tree,我有一个函数和终端值的二叉树。我想把这棵树打印成lisp语句 例如,根为“+”且终端为“2”和“4”的树将读取(+(2 4))。您需要对二叉树进行预排序遍历。因此,如果您拥有该树: + 5 - 3 2 您可能希望按该顺序访问+、5、、、3、2。您可以按如下方式递归执行此操作(假设您的节点具有字段值left和right): 请注意,您只需访问当前节点,然后访问左边的子节点,然后访问右边的子节点。有没有可能发布一些您目前拥有的代码? public

我有一个函数和终端值的二叉树。我想把这棵树打印成lisp语句


例如,根为“+”且终端为“2”和“4”的树将读取(+(2 4))。

您需要对二叉树进行预排序遍历。因此,如果您拥有该树:

      +
  5       -
        3   2
您可能希望按该顺序访问+、5、、、3、2。您可以按如下方式递归执行此操作(假设您的节点具有字段值left和right):


请注意,您只需访问当前节点,然后访问左边的子节点,然后访问右边的子节点。

有没有可能发布一些您目前拥有的代码?
  public void preorder() {
    if (leaf == null && right == null) 
      System.out.println(value);
    else {
      System.out.println("(");
      System.out.println(value);
      if(left != null) left.preorder();
      if(right != null) right.preorder();
      System.out.println(")");
    }
  }