美文网首页剑指Offer-Python-牛客网
面试题32.3:按之字形顺序打印二叉树

面试题32.3:按之字形顺序打印二叉树

作者: 凌霄文强 | 来源:发表于2019-01-11 15:29 被阅读0次

    题目描述

    请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。

    知识点

    二叉树,栈


    Qiang的思路

    这道题和面试题32.2相比,多了分行输出时方向不同的要求。对于这个要求,考虑到遍历完一层节点之后下一层第一个要遍历的节点时上一层最后节点的孩子节点,所以想到了使用栈这个数据结构。由于不同的输出顺序,所以维护了两个栈。第一个栈从左到右存储节点,第二个栈从右到左存储。交替循环知道两个栈都为空的时候结束。

    # -*- 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
            if pRoot==None:
                return []
            result=[]
            s1=[pRoot]
            s2=[]
            while s1!=[] or s2!=[]:
                result.append([])
                if s1!=[]:
                    while s1!=[]:
                        node=s1.pop(-1)
                        result[-1].append(node.val)
                        if node.left!=None:
                            s2.append(node.left)
                        if node.right!=None:
                            s2.append(node.right)
                else:
                    while s2!=[]:
                        node=s2.pop(-1)
                        result[-1].append(node.val)
                        if node.right!=None:
                            s1.append(node.right)
                        if node.left!=None:
                            s1.append(node.left)
            return result
    

    作者原创,如需转载及其他问题请邮箱联系:lwqiang_chn@163.com
    个人网站:https://www.myqiang.top

    相关文章

      网友评论

        本文标题:面试题32.3:按之字形顺序打印二叉树

        本文链接:https://www.haomeiwen.com/subject/dxugrqtx.html