1
我正在嘗試通過中間旅行方法中的二叉樹 我的目標是在樹 中尋找特定鍵的發生例如, 我有以下三種:Prolog尋找樹中元素的位置(不使用列表)
t(t(t(nil,"d",t(nil,"g",nil)),"b",t(nil,"e",nil)),"a",t(t(nil,"f",t(nil,"h",nil)),"c",nil))
時,我會用我的inorder_finder我會得到如下: 爲「C」我會得到8 爲「d」我會得到1 的「w 「我會得到-1
我有com Ë到下面的代碼:
inorder_finder(nil,_,_,0).
inorder_place(t(_,X,_),X,Count,Place) :-
Place is Count+1.
inorder_place(t(L,_,R),Wanted,Count,Place) :-
inorder_place(L,Wanted,Count+1,Place),
Place<1,
inorder_place(R,Wanted,Count+1,Place),
Place<1,
Count = Count+1.
,我調用下面的謂詞:
inorder_finder inorder_place(t(t(t(nil,"d",t(nil,"g",nil)),"b",t(nil,"e",nil)),"a",t(t(nil,"f",t(nil,"h",nil)),"c",nil)),"c",1,Place)
,但目前不工作。 (只是總是返回false) 有什麼想法?
更新:我已經根據我得到的意見更新的代碼 - 它仍然會返回錯誤和不工作,我將它喜歡
_「C 「我會得到8_爲什麼?你的樹根本沒有''c「'? – coder
這有點令人困惑。請將位置從1或0開始?您的無效位置設置爲-1,但如果位置<1,則代碼會繼續搜索,這意味着0被視爲無效的位置指示符。你是什麼意思*目前它不工作?*它不起作用的方式?最後,如果你在顯示'inorder_finder(...)時調用謂詞,你會得到一個錯誤,因爲在Prolog中,函數和左括號之間不能有空格。 – lurker
嗨 - 首先感謝我更新了樹(它沒有複製我用c寫的第二行),並更新了謂詞沒有空格,我需要它的第一個指標是1,任何建議我做錯了什麼? – user1322801