python 二叉樹查詢 Python二叉樹搜尋

2021-10-21 03:17:49 字數 699 閱讀 4619

# 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次。中序遍歷 先向左遞迴查詢,如果左子樹沒有,再比較當前節點,如果仍然不是則向右遍歷查詢。後序遍歷 先向左遞迴查詢,如果...