题目:

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

代码(python):

# -*- 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 []stack1 = [pRoot]    # 定义栈1,并将根结点赋值给栈1stack2 = []         # 定义栈2ret = []        # 结果列表while stack1 or stack2:     # 若栈1和栈2其中一个不为空,则一直循环下去if stack1:      # 若栈1存在:tmpret = []      # 临时结果列表while stack1:    # 循环栈1tmpNode = stack1.pop()     #将栈的最后面元素弹出,赋值给tmpNodetmpret.append(tmpNode.val)    # 将栈的最后面元素赋添加到临时结果列表if tmpNode.left:    # 若tmpNode存在左节点stack2.append(tmpNode.left)   # 则将tmpNode的左节点赋值给栈2if tmpNode.right:   # 若tmpNode存在右节点stack2.append(tmpNode.right)   # 则将tmpNode的右节点赋值给栈2ret.append(tmpret)    # 添加到结果列表if stack2:      # 若栈2存在:tmpret = []      # 临时结果列表while stack2:    # 循环栈2tmpNode = stack2.pop()     #将栈的最后面元素弹出,赋值给tmpNodetmpret.append(tmpNode.val)    # 将栈的最后面元素赋值添加到临时结果列表if tmpNode.right:    # 若tmpNode存在右节点stack1.append(tmpNode.right)   # 则将tmpNode的右节点赋值给栈1if tmpNode.left:    # 若tmpNode存在左节点stack1.append(tmpNode.left)    # 则将tmpNode的左节点赋值给栈1ret.append(tmpret)    # 添加到结果列表return ret

剑指offer、按之字形打印二叉树(python)相关推荐

  1. 【剑指offer】之字形打印二叉树,C++实现

    原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打 ...

  2. 剑指Offer——P32——之字形打印二叉树

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

  3. 【重点】剑指offer——面试题25:二叉树中和为某一值的路径

    剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...

  4. 剑指offer——面试题58:二叉树的下一个结点

    剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...

  5. 剑指offer——面试题39:二叉树的深度

    剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...

  6. 【递归】剑指offer——面试题19:二叉树的镜像

    剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...

  7. 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)

    摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就 ...

  8. 剑指offer面试题6 重建二叉树(java)

    注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...

  9. LeetCode——剑指 Offer 29【顺时针打印矩阵】

    题目 剑指 Offer 29. 顺时针打印矩阵 题目概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 限制: 0 <= matrix.length <= 100 0 & ...

  10. 剑指offer(刷题51-60)--c++,Python版本

    文章目录 目录 第51题: 解题思路: 代码实现: c++ python 第52题: 解题思路: 代码实现: c++ python 第53题: 解题思路: 代码实现: c++ python 第54题: ...

最新文章

  1. 【转】海量数据相似度计算之simhash和海明距离
  2. Flutter 基础Widgets之AppBar详解
  3. 聚焦北京,探秘多媒体开发新趋势(内附资料下载)
  4. linux使用VNC服务轻松远程安装oracle
  5. 用两个栈实现队列 【微软面试100题 第五十七题】
  6. linux目录及重要文件(持续更新)
  7. mmap文件映射与缺页异常 | 图
  8. Rabbitmq 延迟队列
  9. 【JavaScript知识点五】javascript 流程语句
  10. JavaScript常见的网页特效(元素样式相关属性)
  11. 老鹰酒馆 dna_酒吧和酒馆的21个最佳WordPress主题
  12. 推荐一款自带很好用的桌面便签
  13. 给Docker NodeRed 设置登陆账户
  14. 键盘右上角三个灯的作用
  15. Firefox的模仿MyIE插件套餐
  16. 看完嵌入式培训视频的一些感受
  17. 影院售票系统java和数据库_影院售票管理系统的设计与实现(SSH,SQLServer)(含录像)...
  18. PostgreSQL导不了入数据
  19. 深圳南山科技园一公司年终发10台高尔夫奖优秀员工
  20. 浅谈微信营销 百战百胜 欢迎体验

热门文章

  1. (转)SegWit 与 Lightning Network
  2. (转)这张照片告诉了你蚂蚁金服成功的秘密...
  3. Julia:从交易流水动态计算可用资金
  4. 【图像压缩】基本matlab DCT+量化+huffman JPEG图像压缩【含Matlab源码 1217期】
  5. 【语音去噪】基于matlab改进谱减法语音去噪【含Matlab源码 569期】
  6. 【图像边缘检测】基于matlab最小二乘法椭圆边缘检测【含Matlab源码146期】
  7. SPSS P小于0.05,结果真的有效吗?【SPSS 070期】
  8. 人工智能ai算法_当AI算法脱轨时
  9. 【无标题】提示用户输入用户名,然后再提示输入密码,如果用户名 是“admin”并且密码是“88888”,则提示正确,否则,如果 用户名不是admin还提示用户用户名不存在,如果用户名是
  10. 计算机装调与维护报告,Vmware workstation在计算机装调与维护实训中的应用