我正在嘗試爲樹中的每個樹葉指定數字。爲樹中的樹葉指定不同的值
例如,如果我們有一個具有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
我不會在你的代碼中看到任何錯誤。你可以嘗試調試器嗎? –