私はいくつかの再帰的なメソッドを分析したいが、私はそれを行う方法がわからない。この方法の例は次のとおりです。再帰関数のビッグO表記はどのようにして計算できますか?
public static String tree2prefix(LinkedBinaryTree<String> tree) throws IllegalArgumentException {
if (tree == null) {
throw new IllegalArgumentException("Tree was null");
}
if (!isArithmeticExpression(tree)) {
throw new IllegalArgumentException("Tree is not a valid arithmetic expression");
}
return tree2prefix(tree.root(), tree);
}
private static String tree2prefix(Position<String> p, LinkedBinaryTree<String> tree) {
if (tree == null) {
throw new IllegalArgumentException("Tree was null");
}
String prefix = "";
String element = p.getElement();
prefix += element;
if (element.equals("+") || element.equals("-") || element.equals("*")) {
prefix += " " + tree2prefix(tree.left(p), tree) + " ";
prefix += tree2prefix(tree.right(p), tree);
}
return prefix;
}
誰も私がこのおよび他の同様の方法のための時間を実行している最悪のケースを分析し、見つける方法を理解するのに役立ちます。ありがとう!
編集:
代わり
if (element.equals("+") || element.equals("-") || element.equals("*")) {
prefix += " " + tree2prefix(tree.left(p), tree) + " ";
prefix += tree2prefix(tree.right(p), tree);
}
のそれがあった:例えば場合
は時間複雑性は異なるだろうあなたが見ることができるようにここで
prefix += tree2prefix(tree.left(p), tree) + tree2prefix(tree.right(p), tree)
正解があれば、何ポイント獲得できますか?私の宿題のように聞こえる。 – WilomGfx