python實現平衡二叉樹 平衡二叉樹python

2021-10-19 21:21:14 字數 745 閱讀 8498

# 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。每行是...