# 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?在
如果你看一下堆疊深度何時遞增,那麼每次訪問節點時都會增加。在我們的例子中,我們每次都在訪問每個節點。因為當找到正確的節點時停止演算法時沒有返回條件。在
有人能解釋一下他們的思維過程嗎。在
平衡二叉樹例題 平衡二叉樹
acwing 72.平衡二叉樹 思路一 求每個節點的左右子樹深度,根據深度差判斷,直到葉子節點結束,效率不夠高,每個節點都要用兩次計算深度的遞迴函式 思路二 從葉子節點開始,計算深度差,一旦有深度差大於1的,就直接返回0,也不用管上面的深度是不是正確了,畢竟我們只需要true和false兩種狀態,省...
python 平衡二叉樹
題目描述 輸入一棵二叉樹,判斷該二叉樹是否是平衡二叉樹。coding utf 8 class treenode def init self,x self.val x self.left none self.right none class solution def dfs self,proot pa...
平衡二叉樹
平衡二叉樹 time limit 1000 ms memory limit 32768 kb submit 16 6 users accepted 6 6 users 所謂平衡 二叉樹就是 水星文,若看不懂請跳轉到下一題 你的任務判斷輸入的二叉樹是否為平衡二叉樹,是則輸出yes,否則輸出no。每行是...