题解 | #按之字形顺序打印二叉树#

按之字形顺序打印二叉树

http://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0

暴力就完事了

#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param pRoot TreeNode类 
# @return int整型二维数组
#
class Solution:
    def Print(self , pRoot: TreeNode) -> List[List[int]]:
        if pRoot==None:
            return []
        line=0#当前操作行的行号
        stack=[]#栈 后入先出队列
        queue=[pRoot]#队列 先入先出队列
        valQueue=[pRoot.val]
        result=[valQueue.copy()]
        while len(queue)>0:
            valQueue.clear()
            if line==0:
                #首次进行运算
                if queue[0].right!=None:
                    queue.append(queue[0].right)
                    valQueue.append(queue[0].right.val)
                if queue[0].left!=None:
                    queue.append(queue[0].left)
                    valQueue.append(queue[0].left.val)
                queue.pop(0)#删除第一个
                
                if len(valQueue)>0:
                    result.append(valQueue.copy())
                
                line+=1
            elif line%2!=0:#操作奇数行
                '''
                方向由左向右,
                此时应由左向右将子节点入栈
                先左后右
                '''
                while len(queue)>0:
                    if queue[0].right!=None: 
                        stack.append(queue[0].right)
                    if queue[0].left!=None:
                        stack.append(queue[0].left)
                    queue.pop(0)
                while len(stack)>0:
                    valQueue.append(stack[-1].val)
                    queue.append(stack.pop(-1))#将栈中元素放入队列
                if len(valQueue)>0:
                    result.append(valQueue.copy())
                
                line+=1
            else:
                
                #操作偶数行
                '''
                方向由右向左
                先右后左
                '''  
                while len(queue)>0:
                    if queue[0].left!=None:
                        stack.append(queue[0].left)
                    if queue[0].right!=None:
                        stack.append(queue[0].right)
                    queue.pop(0)
                while len(stack)>0:
                    valQueue.append(stack[-1].val)
                    queue.append(stack.pop(-1))#将栈中元素放入队列
                if len(valQueue)>0:
                    result.append(valQueue.copy())
                
                line+=1                    
        return result
                
                
        # write code here
        
        
        
全部评论

相关推荐

2024-12-27 13:08
华南理工大学 Java
蝴蝶飞出了潜水钟丿:多看一眼就会💥
点赞 评论 收藏
分享
2024-11-18 15:57
门头沟学院 Java
最终归宿是测开:这个重邮的大佬在重邮很有名的,他就喜欢打92的脸,越有人质疑他,他越觉得爽😂
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务