ツリー内の各リーフに数値を割り当てようとしています。例えばツリー内のリーフに異なる値を割り当てる
我々は6葉を持つ木を持っている場合、私は私がされている、私のコードがうまく動作しない理由を私は知らない葉は0〜5
に番号を持つようにしたいですでも、再帰的な方法で何度も試みていますが、私は何かが欠けていそうです。..
public class Node {
int index;
int id;
Node left;
Node right;
// Constructor and setters/getters.
public static void num(Node n) {
int ini=0;
if(n==null)
{
}
if(n.isLeaf())
{
n.index=ini;
ini++;
}
if(!n.isLeaf())
{
num(n.getleft());
num(n.getRight());
}
}
はまた、私は、ツリー内の葉の数を取得したいです。例えば
、私たちの木が
1
/ \
2 3
/\ /\
6 9 8 10
/
4
public static int numberChild(Node n, int count)
{
if (n == null) {
return 0;
}
if (n.getleft() == null && n.getRight() == null) {
return 1 + count;
} else {
int lc = numberChild(n.getleft(), count);
int rc = numberChild(n.getRight(), lc);
return rc;
}
}
のように見える私の葉、2の代わりに、4の間違った番号を与えます!
ヘルプ
あなたのツリーはどのような方法でソートされていますか、ラベルは任意の順序で割り当てられますか? –
ツリーはソートされていませんが、葉は、左から右にインデックスを作成します。つまり、逆ポーランド表記が必要です。 – Zok
あなたのコードにバグが見つからない。あなたはデバッガを試すことができますか? –