1#definition for a binary tree node.2#
class treenode:3#
def __init__(self, val=0, left=none, right=none):4#
self.val = val5#
self.left = left6#
self.right = right78
#判斷乙個樹是否是完全二叉樹
9「」「
10解決思路:
11 1、任一節點,有右孩子無左孩子,return
false
12 2、在1不違規的條件下,如果遇到了第乙個左右孩子不全的節點,後續節點均為葉子節點
13」「」
14from collections import
deque
15def is_valid_cbt(head: treenode) ->bool:16#
採用寬度優先遍歷,需使用佇列作為輔助
17if head is
none:
18return
true
19 queue =deque()20#
是否遇到過左右兩個孩子節點不雙全的節點
21 leaf =false
2223
while
queue:
24 head =queue.popleft()
25 l =head.left
26 r =head.right27#
條件228
if (leaf and (l is
not none or r is
notnone)) \29#
條件130
or (l is none and r is
notnone):
31return
false
3233
if l is
notnone:
3435
if r is
notnone:
3637
if l is none or r is
none:
38 leaf =true
39return true
完全二叉樹判斷
有一棵二叉樹,請設計乙個演算法判斷它是否是完全二叉樹。給定二叉樹的根結點root,請返回乙個bool值代表它是否為完全二叉樹。樹的結點個數小於等於500。1 按照層遍歷 2 若有右孩子,沒有左孩子,返回false 3 並不是左右孩子都有,後面必須為葉節點 4 便利過程中如果不返回false,則返回t...
判斷完全二叉樹
思路 根據完全二叉樹的定義可知,對完全二叉樹按從上到下,從左到右的 即層序遍歷 遍歷,應該滿足以下兩點 1 若某結點沒有左孩子,則一定沒有右孩子 2 若某節點無左右孩子,則其後繼結點一定沒有孩子 若不滿足以上的任意一條,則一定不是完全二叉樹。因此可採用層序遍歷二叉樹的方法對每個節點判斷是否滿足以上兩...
二叉樹 判斷二叉樹是否為完全二叉樹
問題描述 判斷一棵二叉樹是否為完全二叉樹。知識點 完全二叉樹是指除二叉樹的最後一層外,其他各層的節點數達到最大個數,且最後一層的葉節點從左到右連續存在,只缺右側若干節點。演算法實現 class node is complete binary tree public static boolean is...