我在編寫算法來計算樹中獨立集合的數量時遇到了困難。 (一個獨立的組爲其中任意兩個節點之間有沒有邊。)獨立集合的算法總數總是減1
這裏是我的ListNode java類:
1public class ListNode
2{
3 private Object data;
4 private ListNode next;
5
6 public ListNode(Object data, ListNode next)
7 {
8 this.data = data;
9 this.next = next;
10 }
11
12 public Object getData() {return data;}
13 public ListNode getNext(){return next;}
14 public void setNext(ListNode n){next = n;}
15 public void setData(Object d){data = d;}
16 public boolean search(ListNode l, Object o)
17 {
18 while (l != null){
19 if (l.getData().equals(o))
20 return true;
21 l = l.getNext();
22 }
23 return false;
24 }
25 public static ListNode rev(ListNode curr)
26 {
27 ListNode rev = null;
28 while (curr != null){
29 rev = new ListNode(curr.getData(), rev);
30 curr = curr.getNext();
31 }
32 return rev;}}
而且我對樹節點java類:
1public class TreeNode
2{ ListNode children = null;
3 public void addChild(TreeNode t)
4 {
5 if (children == null)
6 children = new ListNode(t, null);
7 else{
8 ListNode curr = children;
9 while (curr.getNext() != null)
10 curr = curr.getNext();
11 curr.setNext(new ListNode(t, null));
12 }}
13 public void setChildren(ListNode t){this.children = t;}
14 public int numStableSet()
15 {
16
17 if (children == null || children.getNext() == null)
18 return 2;
19 else{
20 int count = 2;
21 setChildren(children.getNext());
22 count *= numStableSet();
23 return count;
24 }
25 }
方法numStableSet是我需要一些編碼幫助的地方。如現在設置,它打印出1比正確的答案少。我還沒有想出每個節點本身可能是樹的情況。
幫助讚賞
也許很明顯的答案,但不能只是返回/輸出任何你得到'+ 1'? – Annabelle
@Link Ya,我考慮過這個問題,但我不確定把+1放在哪裏,因爲算法需要是遞歸的。將+1放在錯誤的地方會導致超出正確的答案。 –
我懷疑你可以/應該把它放在最終結果即將返回的地方嗎? – Annabelle