剑指offer、按之字形打印二叉树(python)
题目:
- 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推
代码(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)相关推荐
- 【剑指offer】之字形打印二叉树,C++实现
原创文章,转载请注明出处! 本题牛客网地址 博客文章索引地址 博客文章中代码的github地址 1.题目 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打 ...
- 剑指Offer——P32——之字形打印二叉树
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. package jianzhi_offer; impo ...
- 【重点】剑指offer——面试题25:二叉树中和为某一值的路径
剑指offer--面试题25:二叉树中和为某一值的路径 参考网址:https://www.nowcoder.com/profile/5488508/codeBookDetail?submissionI ...
- 剑指offer——面试题58:二叉树的下一个结点
剑指offer--面试题58:二叉树的下一个结点 这个题要认真分析一下... Solution1: 自己想出来的破算法 /* struct TreeLinkNode {int val;struct T ...
- 剑指offer——面试题39:二叉树的深度
剑指offer--面试题39:二叉树的深度 20180906整理 Solution1: 再本题中树的定义:若二叉树只有一个根节点,则此二叉树的深度为1. 迭代法,哈哈哈 /* struct TreeN ...
- 【递归】剑指offer——面试题19:二叉树的镜像
剑指offer--面试题19:二叉树的镜像 Solution1: 递归解法,牢记! 根结点为空的情况容易漏,注意! /* struct TreeNode {int val;struct TreeNod ...
- 二叉树代码 java面试题_《剑指offer》面试题39 二叉树的深度(java)
摘要: 今天翻到了<剑指offer>面试题39,题目二中的解法二是在函数的参数列表中通过指针的方式进行传值,而java是没有指针的,所以函数要进行改造.然而我翻了下别人的java版本(我就 ...
- 剑指offer面试题6 重建二叉树(java)
注:(1)java中树的构建 (2)构建子树时可以直接利用Arrays.copyOfRange(preorder, from, to),这个方法是左开右闭的 1 package com.xsf.Sor ...
- LeetCode——剑指 Offer 29【顺时针打印矩阵】
题目 剑指 Offer 29. 顺时针打印矩阵 题目概述 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字. 限制: 0 <= matrix.length <= 100 0 & ...
- 剑指offer(刷题51-60)--c++,Python版本
文章目录 目录 第51题: 解题思路: 代码实现: c++ python 第52题: 解题思路: 代码实现: c++ python 第53题: 解题思路: 代码实现: c++ python 第54题: ...
最新文章
- 【转】海量数据相似度计算之simhash和海明距离
- Flutter 基础Widgets之AppBar详解
- 聚焦北京,探秘多媒体开发新趋势(内附资料下载)
- linux使用VNC服务轻松远程安装oracle
- 用两个栈实现队列 【微软面试100题 第五十七题】
- linux目录及重要文件(持续更新)
- mmap文件映射与缺页异常 | 图
- Rabbitmq 延迟队列
- 【JavaScript知识点五】javascript 流程语句
- JavaScript常见的网页特效(元素样式相关属性)
- 老鹰酒馆 dna_酒吧和酒馆的21个最佳WordPress主题
- 推荐一款自带很好用的桌面便签
- 给Docker NodeRed 设置登陆账户
- 键盘右上角三个灯的作用
- Firefox的模仿MyIE插件套餐
- 看完嵌入式培训视频的一些感受
- 影院售票系统java和数据库_影院售票管理系统的设计与实现(SSH,SQLServer)(含录像)...
- PostgreSQL导不了入数据
- 深圳南山科技园一公司年终发10台高尔夫奖优秀员工
- 浅谈微信营销 百战百胜 欢迎体验
热门文章
- (转)SegWit 与 Lightning Network
- (转)这张照片告诉了你蚂蚁金服成功的秘密...
- Julia:从交易流水动态计算可用资金
- 【图像压缩】基本matlab DCT+量化+huffman JPEG图像压缩【含Matlab源码 1217期】
- 【语音去噪】基于matlab改进谱减法语音去噪【含Matlab源码 569期】
- 【图像边缘检测】基于matlab最小二乘法椭圆边缘检测【含Matlab源码146期】
- SPSS P小于0.05,结果真的有效吗?【SPSS 070期】
- 人工智能ai算法_当AI算法脱轨时
- 【无标题】提示用户输入用户名,然后再提示输入密码,如果用户名 是“admin”并且密码是“88888”,则提示正确,否则,如果 用户名不是admin还提示用户用户名不存在,如果用户名是
- 计算机装调与维护报告,Vmware workstation在计算机装调与维护实训中的应用