力扣刷題筆記:劍指 Offer 32 - III. 從上到下列印二叉樹 III(單純的列表、佇列queue,對二叉樹進行逐層遍歷,再將每層按奇偶分順逆序)
阿新 • • 發佈:2021-02-11
題目:
劍指 Offer 32 - III、從上到下列印二叉樹 III
請實現一個函式按照之字形順序列印二叉樹,即第一行按照從左到右的順序列印,第二層按照從右到左的順序列印,第三行再按照從左到右的順序列印,其他行以此類推。
例如:
給定二叉樹: [3,9,20,null,null,15,7],
返回其層次遍歷結果:
[
[3],
[20,9],
[15,7]
]
提示:
節點總數 <= 1000
題解思路:
單純利用列表對二叉樹進行逐層遍歷,再將每層按奇偶分順逆序。
題解python程式碼:
# 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[List[int]]:
if not root: return []
ans, queue = [], collections.deque()
queue.append( root) #初始化queue為root
while queue:
temp = [] #定義層輸出列表
for _ in range(len(queue)):
node = queue.popleft() #取出queue最左的元素,並在queue新增左右子樹
if node.left: queue.append(node.left)
if node.right: queue.append(node.right)
temp. append(node.val) #層輸出列表新增node的值
ans.append(temp[::-1] if len(ans)%2!=0 else temp) #按照ans的長度的奇偶情況,判斷是否需要逆序
return ans
作者:a-qing-ge
連結:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/solution/dan-chun-li-yong-lie-biao-dui-er-cha-shu-gjgu/
來源:力扣(LeetCode)https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/