我試圖列表從3 {1 {2 {,}},5 {4 {,},6 {,}}} 到二叉樹這樣如何遞歸地將列表轉換爲BSTree?
3
1 5
2 4 6
我想將其轉換會更容易使用遞歸,但我卡住了。
public void ListToTree (ArrayList al) {
Iterator it = al.iterator();
// n is the Tree's root
BSTnode n = new BSTnode(it.next());
recurse(al,it,n);
}
void recurse (ArrayList al, Iterator it, BSTnode n) {
if(!it.hasNext()) return;
Object element = it.next();
if(element=="{"){
recurse(al,it,n.left());
return;
} else if (element==",") {
recurse(al,it,n.right());
return;
} else if (element =="}") {
}
}
我不知道如何繼續,並想知道它是否是正確的軌道。請給我一些提示如何解決它。而且,我意識到我經常被困在遞歸問題上。是因爲我總是想把它分解嗎?我是否應該自上而下並仔細檢查它是否正確?提前致謝 !
謝謝你的建議。最初的問題是試圖記住一個樹的結構輸出(我選擇它到一個列表,singnature是我在那裏呈現的父母{leftchild {},rightchild {}}這就是爲什麼我想要它的場景。 – Audrey
不幸的是,我並不真正理解你的第二句話...所以你選擇了列表和結構?(你可以很容易地把二叉樹放入一個數組,其中[0]是根,[2k + 1]是左邊和a [2k + 2]是右邊的孩子,k是表示父節點索引的正整數),所以即使你使用{}表示,你仍然不應該傳遞迭代器。你需要一個FSM解析器,詢問你是否需要更多的幫助 – zeller
是的,我完全忘記了數組表示形式!!謝謝你的提示。 – Audrey