python 递归实现树的三种遍历

class TreeNode:def __init__(self,data):self.data = dataself.left = Noneself.right = Nonedef create_binary_tree(input_list = []):"""构建二叉树param input_list:输入数列返回根节点 node"""if input_list is None or len(input_list) == 0:return Nonedata = input_list.pop(0) # pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值if data is None:return Nonenode = TreeNode(data)node.left = create_binary_tree(input_list)node.right = create_binary_tree(input_list)return node  def pre_order(node):"""前序遍历param node:二叉树节点根 左 右"""if node is None:returnprint(node.data,end="")pre_order(node.left)pre_order(node.right)return nodedef in_order(node):"""中序遍历param node:二叉树节点左 根 右"""if node is None:returnin_order(node.left) print(node.data,end="")in_order(node.right)return nodedef post_order(node):"""后序遍历param node:二叉树节点左 右 根"""if node is None:returnpost_order(node.left)post_order(node.right)print(node.data,end="")return nodedef pre_order_with_stock(node):"""二叉树非递归前序遍历,利用stack栈"""stack = []while node is not None or len(stack) > 0:while node is not None:print(node.data)stack.append(node)node = node.leftif len(stack) > 0:node = stack.pop()node = node.rightfrom queue import Queue
def level_order_traversal(node):"""层序遍历,借助队列实现"""queue = Queue()queue.put(node)while not queue.empty():# 打印的同时,然后出队node = queue.get()print(node.data)if node.left is not None:queue.put(node.left)if node.right is not None:queue.put(node.right) input_list = list([1,2,3,4,5,6,7,8,9,None,11])
root = create_binary_tree(input_list)print("前序遍历:")pre_order(root)print("中序遍历:")
in_order(root)
print("后序遍历:")
post_order(root)

结果

前序遍历:12345678911
中序遍历:91187654321
后序遍历:11987654321

【python】详解queue队列(一)
详解queue队列

python 递归实现树的三种遍历相关推荐

  1. 树的三种遍历原理及实现

    树的三种遍历 一棵树的三种遍历方式:先序遍历,中序遍历,后序遍历. 前中后三种顺序其实指的是根的顺序. 先序遍历:根节点.左子树.右子树 中序遍历:左子树.根节点.右子树 后序遍历:左子树.右子树.根 ...

  2. 用c语言实现二叉树的三种遍历_利用循环和递归实现二叉树的三种遍历

    一.前序遍历 遍历的过程为:首先访问根节点,再前序访问其左子树,再前序访问其右子树. 输入二叉树: 正确答案为: [1,3,4,43,3,2,2,2,42] 递归实现: void 输出:[1,3,4, ...

  3. 二叉树的三种遍历(递归与非递归) + 层次遍历

    <转载于  >>> > 二叉树是一种非常重要的数据结构,很多其他数据机构都是基于二叉树的基础演变过来的.二叉树有前.中.后三种遍历方式,因为树的本身就是用递归定义的,因此 ...

  4. python数据结构与算法:二叉树及三种遍历方式(先序遍历/中序遍历/后序遍历)

    树的实现采用queue的形式: 树的三种遍历方式(广度优先白能力法):先序遍历(根左右),中序遍历(左根右)以及后序遍历(左右根) ######################P6.4 数据结构### ...

  5. c语言中二叉树中总结点,C语言二叉树的三种遍历方式的实现及原理

    二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个名字?是根据根节点的顺序命名的. 比如上图正常的一个满节点,A:根节点.B:左节点.C:右节点,前序顺序是ABC(根节点排最先,然后 ...

  6. c语言二叉树的遍历菜单系统,C语言二叉树的三种遍历方式的实现及原理

    C语言二叉树的三种遍历方式的实现及原理 发布时间:2020-10-03 19:43:57 来源:脚本之家 阅读:63 作者:看雪. 二叉树遍历分为三种:前序.中序.后序,其中序遍历最为重要.为啥叫这个 ...

  7. 二叉树三种遍历方式的非递归实现

    树的递归实现方式很简单,下面介绍三种遍历的非递归实现. 树的遍历有个特点,那就是在处理具体问题时,绝大多数情况下是在当前循环.或函数(或是子树)的根节点来处理的,能够注意到当前根节点是如何从上个根节点 ...

  8. 剑指offer——复习1:二叉树三种遍历方式的迭代与递归实现

    剑指offer--复习1:二叉树三种遍历方式的迭代与递归实现 20180905更新:这个博客中的解法不是很好,看相应的LeetCode题目笔记~~~ 我感觉此博客中的说法更容易让人理解:https:/ ...

  9. 二叉树的三种遍历方式(递归、非递归和Morris遍历)

    二叉树的三种遍历方式(递归.非递归和Morris遍历) 原文:http://www.linuxidc.com/Linux/2015-08/122480.htm 二叉树遍历是二叉树的最基本的操作,其实现 ...

最新文章

  1. 整理一份详细的数据预处理方法
  2. J-Focus动画应用框架使用教程
  3. linux下两个进程可以同时打开同一个文件吗?返回的文件描述符一样吗?
  4. centos中文乱码修改字符编码使用centos支持中文
  5. javascript图片轮播(完全自己手写代码)
  6. kubeadm 部署全过程问题解决记录
  7. 印度光伏巨头Adani与华为签署500MW采购合同
  8. mysql5.7卸载语句_MySQL5.7完全卸载
  9. JavaScript中必须掌握的10个难点(必看)
  10. [Mongodb]安装与启动
  11. 怎么学计算机制作ppt教程,ppt 制作教程步骤(新手电脑制作 ppt 详细步骤)
  12. 2022年央视315晚会曝光名单企业完整一览
  13. java 主流框架_java的三大主流框架介绍
  14. 硬盘服务器哪个好用吗,服务器用固态硬盘好还是机械硬盘好
  15. QComboBox显示文本居中问题
  16. ASP.NET MVC+Vue.js实现联系人管理
  17. 2月12日 模拟题 递推 题解
  18. 何苦蹲点预售抢交尾款 这款电竞游戏显示器就超值
  19. obs多推流地址_OBS如何进行多路推流
  20. 渗透服务器修改数据,渗透测试之:从端口入侵服务器

热门文章

  1. 网页采集器哪个好-免费网页采集器排行榜
  2. 苹果最近删除的照片怎么恢复?3个必学方法
  3. UE5 C++ 斯坦福 Note1
  4. 【愚公系列】2022年08月 微信小程序项目篇-抽奖轮盘
  5. 【Project】用摄像头测心率
  6. 我的前端学习之路<总结>
  7. 计算两个经纬度的距离
  8. linux less 快捷键,Linux less命令详解(9个实用案例演示)
  9. 毕设五:老年人摔倒检测及报警装置
  10. 直播回顾|多云时代,如何建设企业级云管理平台?