面試題32 I 從上到下列印二叉樹

2021-10-03 21:43:47 字數 1195 閱讀 5522

從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。

例如:

給定二叉樹:[3

,9,20

,null,null,15,

7],3

/ \ 9

20/ \

157返回:[3

,9,20

,15,7

]

思路:該題用到bfs思想,其實跟bfs還是有些差別;因為bfs需要考慮鄰接節點有沒有被遍歷。

# definition for a binary tree node.

# class treenode:

# def __init__(self, x):

# self.val = x

# self.left = none

# self.right = none

class

solution

:def

levelorder

(self, root: treenode)

-> list[

int]:if

not root:

return

res =

q =[root]

while q:

node = q.pop(0)

return res

下面是bfs的**:

def

bfs(graph, s)

:#graph圖,s為初始節點

queue =

#佇列,先進先出。先放進去再彈出來

visited =

set(

)#空集合,利用集合的唯一性質,遍歷過的節點都儲存其中

visited.add(s)

while

(len

(queue)

>0)

: vertex = queue.pop(0)

nodes = graph[vertex]

#bfs取出節點對應的鄰接節點

for w in nodes:

if w not

in visited:

visited.add(w)

print

(vertex)

面試題32 從上到下列印二叉樹 II

從上到下按層列印二叉樹,同一層的節點按從左到右的順序列印,每一層列印到一行 思想 和普通的層次遍歷不一樣,這題需要記錄每一層元素的個數,在一趟 while 就遍歷完一層,然後再 add 到結果集裡面,每趟遍歷開始清零下一層元素個數 level 每次入隊乙個結點,level public list l...

32 從上到下列印二叉樹

從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。例如 給定二叉樹 3,9,20,null,null,15,7 返回 3,9,20,15,7 佇列 definition for a binary tree node.class treenode def init self,x se...

從上到下列印二叉樹

原理是二叉樹的層次遍歷 可以用乙個佇列輔助,先將二叉樹根節點入隊,然後出隊,將該節點存入vector中,之後判斷根節點的左子樹和右子樹是否為空,若不為空,依次入隊。然後出隊,再訪問出隊的結點是否有左右子樹,以此類推。核心 vectorprintfromtoptobottom treenode roo...