判斷完全二叉樹

2022-09-13 01:09:16 字數 1168 閱讀 1296

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...