二叉树的遍历python 代码
- __author__ = "WSX"
- class Node:
- def __init__(self, val = None, left = None, right = None):
- self.val = val
- self.left = left
- self.right = right
- class tree:
- def __init__(self, L):
- self.val = L
- def bulid(self,root, i): #将列表转化建立二叉树
- if i < len(self.val):
- root = Node(val = self.val[i])
- root.left = self.bulid(root.left, 2*i+1)
- root.right = self.bulid(root.right, 2*i+2)
- return root
- return root
- def preTraverse(self, tree_):
- root = tree_
- if root:
- print(root.val)
- self.preTraverse(root.left)
- self.preTraverse(root.right)
- def midTraverse(self, tree_):
- root = tree_
- if root:
- self.preTraverse(root.left)
- print(root.val)
- self.preTraverse(root.right)
- def postTraverse(self, tree_):
- root = tree_
- if root:
- self.preTraverse(root.left)
- self.preTraverse(root.right)
- print(root.val)
- def cengci(self, tree_):
- root = tree_
- queue = [root] #借助队列
- while root and len(queue)!= 0:
- print(queue[0].val) #visit
- if queue[0].left:
- queue.append(queue[0].left)
- if queue[0].right:
- queue.append(queue[0].right)
- queue.pop(0)
- T = tree(['','','',"","",""])
- root = T.bulid(Node(), 0)
- print("preTraverse"); T.preTraverse(root)
- print("postTraverse");T.postTraverse(root)
- print("midTraverse");T.midTraverse(root)
- print("cengci");T.cengci(root)
非递归遍历:
- __author__ = "WSX"
- def pre(root):
- if not root:
- return None
- stack = [root]
- res = []
- while stack:
- res.append(root.val)
- if root.right:
- stack.append(root.right)
- if root.left:
- stack.append(root.left)
- root = stack.pop()
- return res
- def inOrderTraverse(node):
- stack = []
- pos = node
- while pos is not None or len(stack) > 0:
- if pos is not None:
- stack.append(pos)
- pos = pos.left
- else:
- pos = stack.pop()
- print(pos.val)
- pos = pos.right
- def postOrderTraverse(node):
- stack = [node]
- stack2 = []
- while len(stack) > 0:
- node = stack.pop()
- stack2.append(node)
- if node.left is not None:
- stack.append(node.left)
- if node.right is not None:
- stack.append(node.right)
- while len(stack2) > 0:
- print(stack2.pop().val)
二叉树的遍历python 代码的更多相关文章
- 【数据结构】二叉树的遍历(前、中、后序及层次遍历)及leetcode107题python实现
文章目录 二叉树及遍历 二叉树概念 二叉树的遍历及python实现 二叉树的遍历 python实现 leetcode107题python实现 题目描述 python实现 二叉树及遍历 二叉树概念 二叉 ...
- 【LeetCode】102. Binary Tree Level Order Traversal 二叉树的层序遍历 (Python&C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 BFS DFS 日期 题目地址:https://lee ...
- 二叉树及其遍历方法---python实现
github:代码实现 本文算法均使用python3实现 1. 二叉树 1.1 二叉树的定义 二叉树是一种特殊的树,它具有以下特点: (1)树中每个节点最多只能有两棵树,即每个节点的度最多为2 ...
- Python与数据结构[3] -> 树/Tree[0] -> 二叉树及遍历二叉树的 Python 实现
二叉树 / Binary Tree 二叉树是树结构的一种,但二叉树的每一个节点都最多只能有两个子节点. Binary Tree: 00 |_____ | | 00 00 |__ |__ | | | | ...
- Python算法-二叉树深度优先遍历
二叉树 组成: 1.根节点 BinaryTree:root 2.每一个节点,都有左子节点和右子节点(可以为空) TreeNode:value.left.right 二叉树的遍历: 遍历二叉树:深度 ...
- python实现二叉树的遍历以及基本操作
主要内容: 二叉树遍历(先序.中序.后序.宽度优先遍历)的迭代实现和递归实现: 二叉树的深度,二叉树到叶子节点的所有路径: 首先,先定义二叉树类(python3),代码如下: class TreeNo ...
- Python代码样例列表
扫描左上角二维码,关注公众账号 数字货币量化投资,回复“1279”,获取以下600个Python经典例子源码 ├─algorithm│ Python用户推荐系统曼哈顿算法实现.py│ ...
- [DS+Algo] 010 二叉树的遍历
二叉树遍历 深度优先 一般用递归 一些名词 遍历方式 英文 先序 Preorder 中序 Inorder 后序 Postorder 广度优先 一般用队列 Python 代码示例 class Node( ...
- C++ 二叉树深度优先遍历和广度优先遍历
二叉树的创建代码==>C++ 创建和遍历二叉树 深度优先遍历:是沿着树的深度遍历树的节点,尽可能深的搜索树的分支. //深度优先遍历二叉树void depthFirstSearch(Tree r ...
随机推荐
- 解剖Nginx·模块开发篇(2)ngx_http_hello_world_module 模块基本结构定义
elloWorld 是一个典型的 location 模块.什么是 location 模块?在 Nginx 中,根据作用域,有 main 模块.server 模块.location 模块. 1 模块定义 ...
- java常用正则校验工具类
正则常用校验工具类 import java.util.regex.Pattern; /** * @program: * @description: 校验工具类 * @author: xujingyan ...
- APP安全之代码混淆防止反编译查看真实的头文件函数声明
现在有的公司对自己的爱屁屁(APP)安全上有重视,所以本篇讲一下代码混淆,即使别人反编译出来,也看不出来头文件的信息. 上菜: 1.首先安装class-dump,下载地址:http://steveny ...
- @property 修饰符
原子性--- nonatomic 特质 在默认情况下,由编译器合成的方法会通过锁定机制确保其原子性(atomicity).如果属性具备 nonatomic 特质,则不使用同步锁.请注意,尽管没有名为“ ...
- 647. Palindromic Substrings 互文的子字符串
[抄题]: Given a string, your task is to count how many palindromic substrings in this string. The subs ...
- 线上服务内存OOM问题定位
转自:架构师之路,http://mp.weixin.qq.com/s/iOC1fiKDItn3QY5abWIelg 相信大家都有感触,线上服务内存OOM的问题,是最难定位的问题,不过归根结底,最常见的 ...
- easyui combogrid 多选加载,保存,显示代码
1.调用代码 UTIL.SetDict($("#txt_ExcludeIndustry_"), "SECTOR_TYPE", true, true, funct ...
- redis集群部署及常用的操作命令(上)
简单说下自己测试搭建简单的redis集群的大体步骤: 1.首先你的有6个redis(官方说最少6个,3master,3slave),可以先在一台机器上搭建,搭建到多台上应该只需要改变启动命令即可(可能 ...
- centos7设置、查看、删除环境变量的方法
centos查看环境变量与设置环境变量在使用过程中很常见,本文整理了一些常用的与环境变量相关的命令,感兴趣的朋友可以参考下希望对你有所帮助 1. 显示环境变量HOME(红色部分代表要输入的命令,不要把 ...
- python nose的html报告优化
用的是nose的nose-html-reporting (0.2.3)插件生成报告.用了bootstrap前端框架,加入了开始时间和计算持续时间,及其本地化. 优化后的显示效果: 代码地址