给定一颗二叉树的头节点,按照如下两种标准分别实现二叉树边界节点的逆时针打印

标准一: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 + " ")

打印二叉树的边界节点相关推荐

  1. 算法总结之 打印二叉树的边界节点

    给定一棵二叉树的头节点head, 按照两种标准分别实现二叉树边界节点的逆时针打印 标准一 头节点为边界节点 叶节点为边界节点 如果节点在其所在的层中是最左或者最右边,那么也是边界节点 标准二 头节点作 ...

  2. 【剑指offer】面试题32:从上到下打印二叉树(java)

    从上往下打印二叉树的每个节点,同一层的节点按照从左到右的顺序打印.例如输入下图的二叉树,则一次打印出8,6,10,5,7,9,11. 思路:利用队列,将左右子树加入队列末尾,取出结点 代码: pack ...

  3. python代码打印二叉树某一特定层的节点

    python代码打印二叉树某一特定层的节点 #Python实现打印二叉树某一层的所有节点 # 定义二叉树节点类 class Node(object):def __init__(self,data=0, ...

  4. 从上往下打印出二叉树的每个节点,同层节点从左至右打印。

    从上往下打印出二叉树的每个节点,同层节点从左至右打印. 题目:从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析:借助一个队列,先将根结点的指针入队列,出来时访问它,然后将它的左右孩子带到队 ...

  5. 剑指offer:面试题32 - III. 从上到下打印二叉树 III

    题目: 从上到下打印二叉树 III 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推. 例如: 给定 ...

  6. 剑指offer:面试题32 - II. 从上到下打印二叉树 II

    题目:从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3    / \ ...

  7. 剑指offer:面试题32 - I. 从上到下打印二叉树

    题目:从上到下打印二叉树 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 ...

  8. 从上到下打印二叉树 II

    从上到下打印二叉树 II 从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \1 ...

  9. 从上到下打印二叉树1

    从上到下打印二叉树1 从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印. 例如: 给定二叉树: [3,9,20,null,null,15,7], 3/ \9 20/ \15 7 返回 ...

最新文章

  1. poj2756(高精度加减)
  2. 十个形象比喻,助你理解计算机面试必备的知识点
  3. 两台思科交换机vlan划分_Cisco交换机Vlan划分及ACL配置详细步骤 | 吴文辉博客
  4. 高计能计算要实现软着陆
  5. ip在线代理网页联合早报_一次免费代理ip的爬取实战
  6. QT每日一练day9:设计师界面
  7. 架构师必读!以图文的方式解锁 HTTPS原理,10分钟还原HTTPS真像!
  8. MockServer 服务框架设计
  9. underscore 系列之内部函数 restArgs
  10. 【MATLAB】构建WS小世界网络
  11. Bandicam班迪录屏 高清录制视频软件
  12. 『时代』杂志:元宇宙将改变世界;健身教练:AI让我丢工作!有话说北欧人工智能夏令营资料大公开;深度学习书籍TOP5 | ShowMeAI资讯日报
  13. 键盘方向键的码值列表
  14. 计算机网络人工智能论文,浅析计算机网络中人工智能的应用论文
  15. 织梦DEDE搬家数据还原后,前台错位
  16. python基础知识有哪些需要背(记住是基础知识)我是初学者
  17. Verilog练习:HDLBits笔记15
  18. 安装和使用所见即所得WYSIWYG的 Web 创作软件 BlueGriffon
  19. 绑定新浪微博API 实现验证 登录 返回接口获取信息
  20. 哨兵 双向 java_SpringCloud微服务:Sentinel哨兵组件,管理服务限流和降级

热门文章

  1. 需求分析师的工作重点
  2. python编程django项目django.template.exceptions.TemplateDoesNotExist: registration/login.html解决方法
  3. 算法提高课-图论-单源最短路的建图方式-AcWing 920. 最优乘车:bfs求最短路、建图
  4. Geany编辑器怎么使中文不报错?
  5. 计算机网络第三章-数据链路层
  6. 开服侠显示服务器已停止,蜘蛛侠:极限(已关服)无法连接服务器是什么原因...
  7. 安卓实训项目:基于储存卡音乐播放器实训报告5.0
  8. yii2 pdo mysql 乱码_YII2.0使用PDO连接Oracle库查询结果中文显示乱码问题
  9. html5动态圆,HTML5 很有创意的圆形导航动画
  10. 计算机在材料科学中的应用电子版,计算机在材料科学中的应用技术