# stack_depth is initialised to 0
def find_in_tree(node, find_condition, stack_depth):
assert (stack_depth < max_stack_depth), 'deeper than max depth'
stack_depth += 1
result =
if find_condition(node):
result += [node]
for child_node in node.children:
result.extend(find_in_tree(child_node, find_condition, stack_depth))
return result
我需要幫助理解這段**。我想回答的問題是
上面的python函式搜尋平衡二叉樹的內容。
如果假設上限為1000000個節點,max_stack_depth常量應該設定為多少?
據我所知,這是乙個詭計的問題。如果您仔細想想,每次在遞迴中呼叫find_in_tree()函式時,堆疊深度都會增加。我們試圖在樹中找到乙個特定的節點。在我們的例子中,我們每次都在訪問每個節點,即使我們找到了正確的節點。因為當找到正確的節點時停止演算法時沒有返回條件。因此,最大堆疊深度應為1000000?在
有人能解釋一下他們的思維過程嗎。在
二叉樹 二叉查詢樹
構建二叉樹,判斷是否為二叉查詢樹,遞迴先序遍歷,非遞迴中序遍歷 include include include include using namespace std 二叉樹結點 struct treenode 鍊錶結點 struct listnode struct tempnodetempnode...
二叉樹 二叉查詢樹
二叉樹 binary tree 一種樹型結構,每個節點最多擁有兩個節點。如下圖 幾種型別的二叉樹 1.full binary tree 每個節點的孩子數 是 0 或者 2.對高度沒有要求。如下圖 2.perfect binary tree 這個就是最完美的樹,顧名思義,所有葉子節點都有相同的深度,並...
二叉樹 二叉樹的查詢
三種查詢方式 前序查詢 中序查詢 後序查詢。前序查詢 比較當前節點,如果是,返回查詢結果。如果不是就向左遞迴查詢,如果左邊沒有就向右邊遞迴查詢。設定no 5,針對該題,前序遍歷共4次。中序遍歷 先向左遞迴查詢,如果左子樹沒有,再比較當前節點,如果仍然不是則向右遍歷查詢。後序遍歷 先向左遞迴查詢,如果...