带括号的java打印顺序BST
我想返回一个包含树中所有键的字符串,按键的存储顺序。每个子树中的键应包含在括号中带括号的java打印顺序BST,java,string,binary-search-tree,parentheses,inorder,Java,String,Binary Search Tree,Parentheses,Inorder,我想返回一个包含树中所有键的字符串,按键的存储顺序。每个子树中的键应包含在括号中 _7_ / \ _3_ 8 / \ 1 6 \ / 2 4 \ 5 此BST的输出应该是((()1(()2())3((()4(()5())6())7(()8())。 我的代码是: public String printKeysInOrder() { if (isEmpty()) {
_7_
/ \
_3_ 8
/ \
1 6
\ /
2 4
\
5
此BST的输出应该是((()1(()2())3((()4(()5())6())7(()8())
。
我的代码是:
public String printKeysInOrder() {
if (isEmpty()) {
return "()";
}
printInOrderRec(root);
System.out.print(sb.toString());
return sb.toString();
}
StringBuilder sb = new StringBuilder();
private String printInOrderRec(Node root) {
if (root == null) {
return null;
}
sb.append("(");
printInOrderRec(root.left);
sb.append("(");
sb.append(")");
sb.append(root.val);
printInOrderRec(root.right);
return null;
}
这给了我输出:((()1(()2()3)(()4(()5()6()7(()8
)。
我在这方面已经做了很多年了,不知道在哪里以及如何添加缺少的括号。如果有任何帮助,我将不胜感激。在开始编码解决方案之前,让我们试着画出应该如何生成输出
(--------------------------------7-------)
(------------3-----------------) (--8--)
(--1-------) (------------6--) () ()
() (--2--) (--4-------) ()
() () () (--5--)
() ()
在这里,每一对括号都定义了一个。我不想描述每个调用堆栈,否则这个答案会很长。但是,从图中我们可以找到每个调用堆栈的5个部分
printInOrderRec
方法可能如下所示:
private void printInOrderRec(Node root) {
sb.append("(");
if (root != null) {
printInOrderRec(root.left);
sb.append(root.val);
printInOrderRec(root.right);
}
sb.append(")");
}
注意:我将返回类型设置为void,因为在您的代码中,它只返回null。在跳转到编码解决方案之前,让我们试着画出应该如何生成输出
(--------------------------------7-------)
(------------3-----------------) (--8--)
(--1-------) (------------6--) () ()
() (--2--) (--4-------) ()
() () () (--5--)
() ()
在这里,每一对括号都定义了一个。我不想描述每个调用堆栈,否则这个答案会很长。但是,从图中我们可以找到每个调用堆栈的5个部分
printInOrderRec
方法可能如下所示:
private void printInOrderRec(Node root) {
sb.append("(");
if (root != null) {
printInOrderRec(root.left);
sb.append(root.val);
printInOrderRec(root.right);
}
sb.append(")");
}
注意:我已将返回类型设置为
void
,因为在您的代码中,它只返回空值。感谢sazzad的清晰解释!我很感激!谢谢sazzad的清晰解释!我很感激