剑指Offer59:按之字形顺序打印二叉树

思路:

# -*- coding:utf-8 -*-
# class TreeNode:
#     def __init__(self, x):
#         self.val = x
#         self.left = None
#         self.right = None
class Solution:
    def Print(self, pRoot):
        # write code here
        root=pRoot
        if not root:
            return []
        level=[root]#当前层结点
        result=[]#遍历过结点的值
        righttoleft=False#从右到左的标志符
        while level:
            curvalues=[]#当前层结点的值
            nextlevel=[]#下一层结点
            for i in level:
                curvalues.append(i.val)
                if i.left:
                    nextlevel.append(i.left)
                if i.right:
                    nextlevel.append(i.right)
            if righttoleft:#若为真则逆序
                curvalues.reverse()
            if curvalues:
                result.append(curvalues)#当前层结点的值加入result中
            level=nextlevel#下一层赋值给当前层
            righttoleft=not righttoleft#修改遍历方向
        return result

猜你喜欢

转载自blog.csdn.net/weixin_43160613/article/details/86535347