從上到下列印出二叉樹的每個節點,同一層的節點按照從左到右的順序列印。
例如:
給定二叉樹:[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...