データ構造で与えられた課題では、与えられたコードがテスト クラスのバイナリ ツリーを正しく横断したかどうかを判断するために、テスト クラスを作成する必要がありました。
これらは、私たちに与えられた BinaryTreeNode クラスの 3 つのコンストラクターです。
public BinaryTreeNode(Object theElement, BinaryTreeNode theleftChild, BinaryTreeNode therightChild)
{
element = theElement;
leftChild = theleftChild;
rightChild = therightChild;
}
public BinaryTreeNode(Object theElement)
{
element = theElement;
}
public BinaryTreeNode() {}
指定されたツリーの 1 つを作成するために、テスト クラスで次のコードをすばやく作成しました。
// tree for ( A - B ) / C
BinaryTreeNode b1 = new BinaryTreeNode("A");
BinaryTreeNode b2 = new BinaryTreeNode("-");
BinaryTreeNode b3 = new BinaryTreeNode("B");
BinaryTreeNode b4 = new BinaryTreeNode("/");
BinaryTreeNode b5 = new BinaryTreeNode("C");
BinaryTreeNode bAB = new BinaryTreeNode(b2, b1, b3);
BinaryTreeNode bRoot = new BinaryTreeNode(b4, bAB, b5);
q.put(bRoot);
しかし、私の友人は私がこのようにすることを提案しました:
// tree for ( A - B ) / C
BinaryTreeNode b1 = new BinaryTreeNode("A");
BinaryTreeNode b2 = new BinaryTreeNode("B");
BinaryTreeNode b3 = new BinaryTreeNode("C");
BinaryTreeNode bRoot= new BinaryTreeNode("/", new BinaryTreeNode("-", b1, b2), b3);
q.put(bRoot);
しかし、彼はなぜこの方法が優れているのかを説明するのに苦労しました。これがより効率的である理由を誰か説明できますか? 例からさらにコードが必要な場合は、お問い合わせください。