#!/usr/bin/python3.5
#_*_coding:utf-8_*_class Node:def __init__(self,value):self.data = valueself.lchild = Noneself.rchild = Noneclass Tree:def __init__(self):self.__root = Noneself.__i = 0 #用于方便创建树def __createTree(self,T,str):c = str[self.__i]self.__i += 1if c == '#':T = Noneelse:T = Node(c)T.lchild = self.__createTree(T.lchild,str)T.rchild = self.__createTree(T.rchild,str)return Tdef createTree(self,str):root = Noneself.__i = 0self.__root = self.__createTree(root,str)return self.__rootdef clearTree(self,T):if T == None:returntemp = Tself.clearTree(T.lchild)self.clearTree(T.rchild)del tempreturn Nonedef treeEmpty(self):return self.__root == Nonedef treeDepth(self,T):if T == None:return 0left = self.treeDepth(T.lchild)right = self.treeDepth(T.rchild)return left + 1 if left >= right else right + 1def getRoot(self):if self.treeEmpty():print('树空')returnelse:print(self.__root.data)return self.__root.datadef postOrderTraverse(self,T = None):if T == None:print('#')returnself.postOrderTraverse(T.lchild)self.postOrderTraverse(T.rchild)print(T.data)def inOrderTraverse(self,T):if T == None:print('#')returnself.inOrderTraverse(T.lchild)print(T.data)self.inOrderTraverse(T.rchild)def preOrderTraverse(self,T):if T == None:print('#')returnprint(T.data)self.preOrderTraverse(T.lchild)self.preOrderTraverse(T.rchild)if __name__ == '__main__':tree = Tree()root = tree.createTree('AB#D##C##')

Python写数据结构:二叉树的创建和遍历相关推荐

  1. Python写数据结构:二叉树的性质

    二叉树性质1: 在二叉树的第i层上至多有2^(i-1)个结点(i>=1) 二叉树性质2: 深度为k的二叉树至多有2^k - 1个结点(k>=1) 二叉树性质3: 对任何一棵二叉树T,如果其 ...

  2. python二叉树的创建与遍历

    二叉树的基本概念: 一个结点的层次直观上来说就是其所在的行,其中根结点层次为1(第一行),其子结点层次为2(第二行),以此类推 二叉树的深度(高度):指的是二叉树中的最大叶子结点所在的层.二叉树的深度 ...

  3. 二叉树的创建和遍历-C语言实现

    二叉树的创建和遍历-C语言实现 链式存储结构 struct BinaryTreeNode {//数据char data;//左子树BinaryTreeNode *leftChild;//右子树Bina ...

  4. c语言二叉树的生成,C语言实现二叉树的创建以及遍历(递归)

    C语言实现二叉树的创建以及遍历 #include typedef char ElemType; typedef struct BiTNode { ElemType data; struct BiTNo ...

  5. 二叉树----数据结构:二叉树的三种遍历及习题

    二叉树----数据结构:二叉树的三种遍历,利用递归算法. 关于二叉树的遍历,应用非常广泛,不单单是访问打印结点,还可以进行一系列的操作,如赋值.删除.查找.求二叉树的深度等等. 有递归和非递归两种算法 ...

  6. C语言二叉树的创建与遍历

    二叉树的创建与遍历 文章目录 二叉树的创建与遍历 前言 一.二叉树的结构 二.二叉树创建和三种遍历 1. 2.前序遍历 3.中序遍历 4.后序遍历 5.测试代码 总结 前言 二叉树(binary tr ...

  7. 【二叉树详解】二叉树的创建、遍历、查找以及删除等-数据结构05

    二叉树 1. 二叉树简介 定义: 每一个结点的子节点数量不超过 2 二叉树的结点分为:左节点.右节点 满二叉树: 每个结点都有两个子结点的二叉树(除了叶子结点外) 完全二叉树: 除去最后一层,是一个满 ...

  8. 二叉树的创建和遍历实现

    1 前言 提到**树(Tree)**结构,很容易联想到"大树",想到这是"一对多关系"特性的数据结构,其相关的名词.概念很多: 子树(SubTree).结点(N ...

  9. 二叉树的创建、遍历(递归和非递归实现)、交换左右子数、求高度(c++实现)

    要求:以左右孩子表示法实现链式方式存储的二叉树(lson-rson),以菜单方式设计并完成功能任务:建立并存储树.输出前序遍历结果.输出中序遍历结果.输出后序遍历结果.交换左右子树.统计高度,其中对于 ...

最新文章

  1. redis安装 redis命令 php如何使用redis
  2. 计算机cmd shutdown,cmd里面shutdown命令的原因是什么?什么时候显示的?
  3. Leetcode 215. 数组中的第K个最大元素 解题思路及C++实现
  4. 玩转html5画图 - TimeLangoliers - 博客园
  5. VC++ 单文档项目显示打开的文件
  6. python入门经典书籍知乎_知乎问题回答 - 《Python100天从新手到大师》 - 开源书籍(oscbook.com)...
  7. 轻量级的开源集成:Apache Camel还是Spring集成?
  8. caffe专题五——回归中——检测框架
  9. 可口可乐在人工智能和大数据领域的7项应用
  10. Django基础—— 19.Form
  11. 程序猿的奋斗史(三十八)——大学断代史(二)——我与数据库的故事
  12. .net中模拟键盘和鼠标操作
  13. Monent.js:强大的日期处理类库
  14. 大数据分析-第十二章 Spark与数据分析
  15. JMS消息服务 API解析
  16. 卡西欧电子词典EV-SP3900(英汉日版)
  17. 锐龙r3 4100核显 r3 4100参数 r3 4100评测
  18. 计算机滴答滴的教学,滴答滴教案
  19. ESP32接入米家-小爱同学-IDF环境-巴法平台
  20. 一篇文章带你搞定二维插值的 MATLAB 计算

热门文章

  1. 笔者认为,中国的互联网行业需要真正的CEO
  2. [转载] python缩进报错_python缩进报错
  3. hadoop深入学习之SequenceFile
  4. ASP.NET SignalR 与LayIM配合,轻松实现网站客服聊天室(四) 添加表情、群聊功能...
  5. Spring好处—总结
  6. SharePoint 2010新特性文档集
  7. 添加库文件_S7200的库文件导至200SMART正确操作
  8. python中文字体奇怪_利用python检查 AS400的中文字问题
  9. 会返回两次_毅力号火星车上的这些采样管,十年后将返回地球
  10. java 导出表格打包zip文件下载_asyExcel导出excel并打包成zip压缩包下载