我是一個新的python編程,最近我在編程遞歸時遇到了一些問題。考慮我有一個Graph作爲:a)頂點列表b)和一個鄰接列表(作爲2維列表),我試圖得到一個列表,這將給我這些頂點的Postorder遍歷順序(Post_Order_List_of_Node),這將反映任何節點的順序(Order_of_Node)和所有節點的父親列表。我寫了下面這段代碼:在Python中使用遞歸進行後序遍歷
我的「訂單」變量是全局的,但根據輸出,它沒有增加。
我不知道爲什麼,但變量「訂單」沒有得到更新。
def Post_Order(node,order,father):
Order_of_Node = [No_of_Nodes]*No_of_Nodes #Initialization
Post_Order_List_of_Node = [No_of_Nodes]*No_of_Nodes #Initialization
def recursive(node,order,father):
if len(Spanning_Tree[node]) == 0:
Order_of_Node[node] = order
Post_Order_List_of_Node[order] = node
order = order + 1
Father_List[node] = father
del(Spanning_Tree[father][0])
return
else:
while(len(Spanning_Tree[node])!=0):
recurse(Spanning_Tree[node][0],order,node)
recurse(node,order,father)
return Post_Order_List_of_Node,Order_of_Node
Father_List = [0]*No_of_Nodes
root = 0
father = 0
order = 1
Order = []
Order = Post_Order(root,order,father)
好了,所以我無法發佈測試輸入和輸出,因爲Stackoverflow認爲它也是代碼的一部分,不讓我發佈問題。所以這裏是: 例如我的樹是:「[[1,2],[3],[],[4],[5,6],[],[]]」 但我的Order_of_Node是: 「[7,1,1,1,1,1,1]」 和Post_Order_List_of_Node =「[7,2,7,7,7,7]」 – user2435273
您的代碼不一致且非常規(變量名,間距)等等,因此會更難以閱讀。 –
此代碼不起作用,因爲'Post_Order()'在使用後定義。也許還有其他的錯誤。 – user3159253