美文网首页剑指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

相关文章

  • Java日记2018-06-04

    32.3 按之字形顺序打印二叉树上一题的扩展,使用辅助的队列 和栈来实现,注意一下注释里面顺序的坑 二叉搜索树的后...

  • JZ-059-按之字形顺序打印二叉树

    按之字形顺序打印二叉树 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从...

  • 打印二叉树

    按之字形顺序打印二叉树 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺...

  • 【32.3】按之字形顺序打印二叉树

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行...

  • 剑指offer第二版-32.3.之字形打印二叉树

    本系列导航:剑指offer(第二版)java实现导航帖 面试题32.3:之字形打印二叉树 题目要求:请实现一个函数...

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

    题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行...

  • 剑指offer | 按之字形顺序打印二叉树

    按之字形顺序打印二叉树 请实现一个函数按照之字顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的...

  • 二叉树的遍历

    从上往下打印二叉树 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 按之字形顺序打印二叉树 请实现一个函数...

  • 剑指第三周

    对称的二叉树 其实就是要遍历嘛 按之字形顺序打印二叉树 同样是简单的层次遍历 把二叉树打印成多行 这个更简单了 栈...

  • 剑指offer编程题—按之字形打印二叉树

    题目描述请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按...

网友评论

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

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