LeetCode 102 && 429 廣度優先遍歷
阿新 • • 發佈:2018-12-25
本文首發於公眾號「zone7」,關注獲取最新推文!
概述
- 前言
- 429 N 叉樹的層次遍歷 90.36%
- 102 二叉樹的層次遍歷 99.76%
- 後記
前言
不管經濟多不好,提高自身硬實力才是關鍵。最近我也開始刷題了,所以後面的文章會時不時出現 LeetCode 的題。希望我們一起提高,一起進步。
429 N 叉樹的層次遍歷 90.36%
給定一個 N 叉樹,返回其節點值的層序遍歷。 (即從左到右,逐層遍歷)。
例如,給定一個 3叉樹
:
返回其層序遍歷:
[ [1], [3,2,4], [5,6] ]
說明:
- 樹的深度不會超過
1000
。 - 樹的節點總數不會超過
5000
。
思路
如果你有讀我前面的文章就知道,其實這個就是二叉樹層次遍歷的一個變形。
for child in current.children:
que.append(child);
用這句程式碼替換了左右子樹加入佇列。
解答
# 執行效率:90.36% """ # Definition for a Node. class Node(object): def __init__(self, val, children): self.val = val self.children = children """ class Solution(object): def levelOrder(self, root): """ :type root: Node :rtype: List[List[int]] """ if not root: return []; que = []; res = []; que.append(root); while len(que): l = len(que); sub = []; for i in range(l): current = que.pop(0); sub.append(current.val); for child in current.children: que.append(child); res.append(sub); return res;
102 二叉樹的層次遍歷 99.76%
給定一個二叉樹,返回其按層次遍歷的節點值。 (即逐層地,從左到右訪問所有節點)。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
3
/ \
9 20
/ \
15 7
返回其層次遍歷結果:
[
[3],
[9,20],
[15,7]
]
思路
嗯,這就是上篇文章《python 實現二叉樹的深度&&廣度優先的遍歷》中的層次遍歷程式碼。不用解釋太多了。
解答
# 執行效率:99.76% # Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution(object): def levelOrder(self, root): if not root: return [] ret = [] ret.append(root) ret2 = [] while len(ret) != 0: temp = [] length = len(ret) for index in range(length): tempValue = ret.pop(0) temp.append(tempValue.val) if tempValue.left is not None: ret.append(tempValue.left) if tempValue.right is not None: ret.append(tempValue.right) ret2.append(temp) return ret2
後記
今天的題就到這裡了,如果有什麼好刷題的建議可以留言或者後臺私信給我,我會分享給大家。