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