打印二叉树的边界节点
给定一颗二叉树的头节点,按照如下两种标准分别实现二叉树边界节点的逆时针打印
标准一:1、头节点为边界节点 2、叶节点为边界节点 3、如果节点在其所在的层中的最左边或最右边,那么也是边界节点
class Node:def __init__(self,value):self.value = valueself.left = Noneself.right = Nonedef getHeight(head,i):if head == None:return ireturn max(getHeight(head.left,i+1),getHeight(head.right,i+1))def printEdge(head):if head == None:returnheight = getHeight(head,0)edgeMap = [[None for i in range(2)] for j in range(len(height))]setedgeMap(head,0,edgeMap)//打印左边界for i in range(len(edgeMap)):print(edgeMap[i][0].value + " ")//打印非左边界、右边界的叶子节点printInfo(head)//打印右边界for i in range(len(edgeMap)-1,-1,-1):if edgeMap[i][0]!=edgeMap[i][1]:print(edgeMap[i][1].value + " ")def printInfo(head,i,edgeMap):if head == None:return if head.left == None and head.right == None and head!=edgeMap[i][0] and head!=edgeMap[i][1]:print(head.value + " ")printInfo(head.left,i+1,edgeMap)printInfo(head.right,i+1,edgeMap)def setedgeMap(head,i,edgeMap):if head == None:return if edgeMap[i][0] == None:edgeMap[i][0] = headedgeMap[i][1] = headsetedgeMap(head.left,i+1,edgeMap)setedgeMap(head.right,i+1,edgeMap)
标准二:1、头节点为边界节点 2、叶节点为边界节点 3、树左边界延伸下去的路径为边界节点 4、数右边界延伸下去的路径为边界节点
def printEdge2(head):if head == None:returnprint(head.value + " ")if head.left!=None and head.right!=None:printLeftEdge(head.left,true)printRightEdge(head.right,true)elif head.left != None:printEdge2(head.left)else:printEdge2(head.right)def printLeftEdge(head,isPrint): if head == None:returnif isPrint or (head.left == None and head.right == None):print(head.value + " ")printLeftEdge(head.left,isPrint)printLeftEdge(head.right,bool(isPrint and root.left==None))def printRightEdge(head,isPrint):if head == None:returnprintRightEdge(head.left,bool(isPrint and head.right == None))printRightEdge(head.right,isPrint)if isPrint or (head.left==None and head.right==None):print(head.value + " ")
打印二叉树的边界节点相关推荐
- 算法总结之 打印二叉树的边界节点
给定一棵二叉树的头节点head, 按照两种标准分别实现二叉树边界节点的逆时针打印 标准一 头节点为边界节点 叶节点为边界节点 如果节点在其所在的层中是最左或者最右边,那么也是边界节点 标准二 头节点作 ...
- 【剑指offer】面试题32:从上到下打印二叉树(java)
从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印.例如输入下图的二叉树,则一次打印出8,6,10,5,7,9,11. 思路:利用队列,将左右子树加入队列末尾,取出结点 代码: pack ...
- python代码打印二叉树某一特定层的节点
python代码打印二叉树某一特定层的节点 #Python实现打印二叉树某一层的所有节点 # 定义二叉树节点类 class Node(object):def __init__(self,data=0, ...
- 从上往下打印出二叉树的每个节点,同层节点从左至右打印。
从上往下打印出二叉树的每个节点,同层节点从左至右打印. 题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析:借助一个队列,先将根结点的指针入队列,出来时访问它,然后将它的左右孩子带到队 ...
- 剑指offer:面试题32 - III. 从上到下打印二叉树 III
题目: 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定 ...
- 剑指offer:面试题32 - II. 从上到下打印二叉树 II
题目:从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ ...
- 剑指offer:面试题32 - I. 从上到下打印二叉树
题目:从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 ...
- 从上到下打印二叉树 II
从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \1 ...
- 从上到下打印二叉树1
从上到下打印二叉树1 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回 ...
最新文章
- poj2756(高精度加减)
- 十个形象比喻,助你理解计算机面试必备的知识点
- 两台思科交换机vlan划分_Cisco交换机Vlan划分及ACL配置详细步骤 | 吴文辉博客
- 高计能计算要实现软着陆
- ip在线代理网页联合早报_一次免费代理ip的爬取实战
- QT每日一练day9:设计师界面
- 架构师必读!以图文的方式解锁 HTTPS原理,10分钟还原HTTPS真像!
- MockServer 服务框架设计
- underscore 系列之内部函数 restArgs
- 【MATLAB】构建WS小世界网络
- Bandicam班迪录屏 高清录制视频软件
- 『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
- 键盘方向键的码值列表
- 计算机网络人工智能论文,浅析计算机网络中人工智能的应用论文
- 织梦DEDE搬家数据还原后,前台错位
- python基础知识有哪些需要背(记住是基础知识)我是初学者
- Verilog练习:HDLBits笔记15
- 安装和使用所见即所得WYSIWYG的 Web 创作软件 BlueGriffon
- 绑定新浪微博API 实现验证 登录 返回接口获取信息
- 哨兵 双向 java_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级
热门文章
- 需求分析师的工作重点
- python编程django项目django.template.exceptions.TemplateDoesNotExist: registration/login.html解决方法
- 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
- Geany编辑器怎么使中文不报错?
- 计算机网络第三章-数据链路层
- 开服侠显示服务器已停止,蜘蛛侠:极限(已关服)无法连接服务器是什么原因...
- 安卓实训项目:基于储存卡音乐播放器实训报告5.0
- yii2 pdo mysql 乱码_YII2.0使用PDO连接Oracle库查询结果中文显示乱码问题
- html5动态圆,HTML5 很有创意的圆形导航动画
- 计算机在材料科学中的应用电子版,计算机在材料科学中的应用技术