当前位置: 代码迷 >> 综合 >> LeetCode 103.二叉树的锯齿形层次遍历
  详细解决方案

LeetCode 103.二叉树的锯齿形层次遍历

热度:52   发布时间:2023-10-21 02:39:39.0

给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。

例如:
给定二叉树 [3,9,20,null,null,15,7],

    3/ \9  20/  \15   7

返回锯齿形层次遍历如下:

[[3],[20,9],[15,7]
]

 

渣渣晴分了左右两边讨论……

下一层树的保存顺序不一样……

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:if not root:return []LorR=True #先左result=[]level=[root]while len(level)>0:if LorR:#左num=[]temp=[]for tree in level:num.append(tree.val)if tree.left:temp.insert(0,tree.left)if tree.right:temp.insert(0,tree.right)level=tempresult.append(num)LorR=Falseelse:#右num=[]temp=[]for tree in level:num.append(tree.val)if tree.right:temp.insert(0,tree.right)if tree.left:temp.insert(0,tree.left)level=tempresult.append(num)LorR=Truereturn result

 

照着大佬的改,不知道为没他那么快……总之,按从左到右的顺序存数字,再一逆序就好了……渣渣晴哭晕……

# Definition for a binary tree node.
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = Noneclass Solution:def zigzagLevelOrder(self, root: TreeNode) -> List[List[int]]:if not root:return []LorR=False #先左result=[]level=[root]while len(level)>0:num=[]temp=[]for tree in level:num.append(tree.val)                    if tree.left:temp.append(tree.left)if tree.right:temp.append(tree.right)      if LorR:#右result.append(num[::-1])else:#左result.append(num)level=temp          LorR= not LorRreturn result