阅读目录

  • 题目描述
  • 思路与Python实现

题目描述

  • 输入一棵二叉树,求出树的左视图,或者右视图,如下图所示,的两种情况

思路与Python实现

  • 如果可以用非递归的方式写出二叉树的深度遍历或者广度遍历的话,如果给定的一棵树是一棵满二叉树或者完全二叉树,那么左视图就是,一直添加左子树的结点,然后输出即可;但是如上左图的二叉树,没有严格按照完全二叉树的定义,那么我们就要改变下想法了!
  • 直接从 广度遍历出发,因为广度遍历是一层一层的打印,所以想法是,每次都输出每一层的第一个结点就是左视图,每一层最后一个结点,就是右视图,而且这种做法,不受二叉树形态的影响
  • 具体做法是:在广度遍历的代码上修改,通过控制二叉树每层的结点,每次获取到每一层二叉树的所有结点,然后遍历出每一层结点,输出第一个或者最后一个即可!
class TreeNode(object):def __init__(self, val):self.val = valself.left = Noneself.right = Noneclass BinaryTree(object):def __init__(self, root=None):self.root = rootdef add(self, val):  # 添加结点node = TreeNode(val)if self.root is None:self.root = nodereturnqueue = [self.root]while queue:temp_node = queue.pop(0)if temp_node.left is None:temp_node.left = nodereturnelse:queue.append(temp_node.left)if temp_node.right is None:temp_node.right = nodereturnelse:queue.append(temp_node.right)def tree_view(self, node):  # 打印出树的左、右视图if node is None:returnqueue = [node]node_list = [] while queue:temp = []for k in range(len(queue)):  # 控制二叉树每层的结点temp_node = queue.pop(0)if temp_node.left:queue.append(temp_node.left)if temp_node.right:queue.append(temp_node.right)temp.append(temp_node.val) # 每次添加到这一层所有结点node_list.append(temp) # 将所有层,按照列表的形式存放好res = []for item in node_list:# ans.append(item[0]) # 左视图res.append(item[-1]) # 右视图print(res)if __name__ == '__main__':t = BinaryTree()for i in range(10):t.add(i)t.left_view(t.root) # [0,1,3,7] / [0,2,6,9]

Python数据结构与算法题目 打印二叉树的左视图 打印二叉树的右视图 树的左视图 树的右视图相关推荐

  1. PTA数据结构与算法题目集 6-9 二叉树的遍历

    PTA数据结构与算法题目集(中文) 6-9 二叉树的遍历 void InorderTraversal( BinTree BT ){if(BT==NULL)return;if(BT->Left){ ...

  2. 视频教程-Python数据结构与算法面试(上)-Python

    Python数据结构与算法面试(上) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲师,制作视频课程超过1 ...

  3. PTA 数据结构与算法题目集(中文)

    一:数据结构与算法题目(中文版) 7-2 一元多项式的乘法与加法运算 (20 分) 7-3 树的同构 (25 分) 7-4 是否同一棵二叉搜索树 (25 分) 7-6 列出连通集 (25 分)(详解) ...

  4. python数据结构和算法 时间复杂度分析 乱序单词检测 线性数据结构 栈stack 字符匹配 表达式求值 queue队列 链表 递归 动态规划 排序和搜索 树 图

    python数据结构和算法 参考 本文github 计算机科学是解决问题的研究.计算机科学使用抽象作为表示过程和数据的工具.抽象的数据类型允许程序员通过隐藏数据的细节来管理问题领域的复杂性.Pytho ...

  5. 数据结构与算法题目集PTA

    数据结构与算法题目集PTA 6-1 单链表逆转 6-2 顺序表操作集 6-3 求链式表的表长 6-4 链式表的按序号查找 6-5 链式表操作集 6-6 带头结点的链式表操作集 6-7 在一个数组中实现 ...

  6. PTA数据结构与算法题目集6-4 6-3 6-8

    PTA数据结构与算法题目集(中文) 6-4 链式表的按序号查找 ElementType FindKth( List L, int K ){int index = 0;while(L){++index; ...

  7. python leetcode_leetcode 介绍和 python 数据结构与算法学习资料

    for (刚入门的编程)的高中 or 大学生 leetcode 介绍 leetcode 可以说是 cs 最核心的一门"课程"了,虽然不是大学开设的,但基本上每一个现代的高水平的程序 ...

  8. Python数据结构与算法(1.7)——算法分析

    Python数据结构与算法(1.7)--算法分析 0. 学习目标 1. 算法的设计要求 1.1 算法评价的标准 1.2 算法选择的原则 2. 算法效率分析 2.1 大 OOO 表示法 2.2 常见算法 ...

  9. python数据结构与算法练习-Printer Queue

    python数据结构与算法练习-队列 Printer Queue python实现 需要注意的知识点: Printer Queue 链接: link. The only printer in the ...

最新文章

  1. java架构设计理解(一)
  2. 新手一看就懂的线程池
  3. sql必知必会(第四版) 学习笔记二 视图
  4. BERT 蒸馏在垃圾舆情识别中的探索
  5. 控制Domino的log.nsf数据库过大增长
  6. Codeforces Round #635 (Div. 1) C. Kaavi and Magic Spell 区间dp
  7. Centos启动卡住,starting auditd: [failed]
  8. ubuntu arm qt_Cyclone V SOC(ARM+FPGA)开发文档_之开发流程详解
  9. Cannot start process,the working directory 'F:\hello\hello'does not exit 问题解决
  10. java材质_教程 - JAVA版材质包制作教程 | MineBBS 我的世界中文论坛
  11. Boost Graph Library
  12. 用C语言实现万年历的代码及思路(详细教程)
  13. mysql libaio_手动编译安装mysql,报错没有libaio模块,
  14. 你的奋斗也许只是一个屁
  15. 计算机启动时蓝屏后自动重起,升级Win10系统之后一开机就蓝屏且电脑不断重启怎么解决?...
  16. 机器学习中的特异性和敏感性
  17. Git-Gitlab中如何删除项目
  18. Snapchat争先恐后地修复失败的重新设计,将故事转移到发现之中
  19. PostgreSQL trigger
  20. 前端ES5/JavaScript高频面试题 及答案

热门文章

  1. 【C语言】5个成绩,去掉最高分,去掉最低分,求 平均分
  2. 优秀的UI设计师应该了解的图标设计规范!
  3. node api框架_使用Web API,Node和Nexmo从浏览器发送SMS
  4. java.util.concurrent.TimeoutExceptiofor com.alibaba.nacos.shaded.io.grpc.stub.ClientCalls$GrpcFuture
  5. ASCII编码以及转换
  6. 【STM32】标准库 菜鸟入门 GPIO输入
  7. 安卓逆向-new-sec6-4 Java反射相关知识以及平头哥框架hook构造函数 | App发布测试版本感染
  8. 文件怎么批量全部打印出来,网上打印文件怎么操作
  9. 力推:无限制下载神器aria2
  10. 怎么设置网页背景 html,html怎么设置网页背景