二叉树递归遍历的python实现
来源:互联网 发布:健身 年轻 知乎 编辑:程序博客网 时间:2024/05/17 21:47
一、节点类的定义
class Node(): def __init__(self, data, left, right): self.data = data self.left = left self.right = right
二、生成二叉树
class BTree: def __init__(self): self.root = None def insert(self, data): #插入节点 r = self.root if r is None: self.root = Node(data, None, None) return while True: # 比根结点小放在左边 if r.data > data: if r.left is None: r.left = Node(data, None, None) break else: r = r.left else: # 比根结点大放在右边 if r.right is None: r.right = Node(data, None, None) break else: r = r.right
三、前序遍历
def preoder(self, root): if root is None: return else: print root.data self.preoder(root.left) self.preoder(root.right)
四、中序遍历
def midoder(self, root): if root is None: return else: self.midoder(root.left) print root.data self.midoder(root.right)
五、后序遍历
def postoder(self, root): if root is None: return else: self.postoder(root.left) self.postoder(root.right) print root.data
六、测试
if __name__ == '__main__': bt = BTree() L=[3,7,5,8,9,10,11,2,6,4] for i in L: bt.insert(i) bt.preoder(bt.root) bt.midoder(bt.root) bt.postoder(bt.root)
七、总代吗
class Node(): def __init__(self,root): self.root=root self.lchild=None self.rchild=Noneclass Bitree(): def __init__(self): self.root=None def insert(self,root,node): #插入节点 if root: if root.root>node.root: if root.lchild: self.insert(root.lchild,node) else: root.lchild=node else: if root.rchild: self.insert(root.rchild,node) else: root.rchild=node else: return 0 def initBitree(self,data): #生成二叉树 root=Node(data[0]) length=len(data) for x in range(1,length): node=Node(data[x]) self.insert(root,node) return root def preoder(self,root): #先序遍历 if root: print(root.root) self.preoder(root.lchild) self.preoder(root.rchild) def midoder(self,root): #中序遍历 if root: self.midoder(root.lchild) print(root.root) self.midoder(root.rchild) def postoder(self,root): #后序遍历 if root: self.postoder(root.lchild) self.postoder(root.rchild) print(root.root)if __name__ == '__main__': data=[3,7,5,8,9,10,11,2,6,4] Bitree=Bitree() a=Bitree.initBitree(data) print('前序遍历:') Bitree.preoder(a) print('中序遍历:') Bitree.midoder(a) print('后序遍历:') Bitree.postoder(a)
阅读全文
1 0
- 二叉树递归遍历的python实现
- Python实现二叉树的递归和非递归遍历
- 非递归实现二叉树的遍历
- 二叉树遍历的递归实现图解
- 二叉树的遍历递归实现
- 非递归实现二叉树的遍历
- 二叉树遍历的非递归实现
- 二叉树遍历的非递归实现
- 二叉树遍历的非递归实现
- 二叉树的创建遍历 递归实现
- 二叉树的非递归遍历实现
- 二叉树遍历的非递归实现
- 非递归实现二叉树的遍历
- 二叉树遍历的非递归实现
- 二叉树遍历的非递归实现
- 非递归遍历二叉树的实现
- 二叉树遍历的非递归实现
- 二叉树的递归遍历----java实现
- 搭建本地Tomcat服务器及相关配置
- 使用列表控件
- 真机测试-unable to load script 坑
- Shell 数组
- MVC层的接口调用
- 二叉树递归遍历的python实现
- Dubbo源码阅读之 ExtensionLoader
- 进程间通信—消息队列
- MySQL数据库安装与配置
- qq飞控 银燕电机 天行者20a电调 天地飞7遥控器 所有飞控接收机大同小异
- C++形参为引用时的内存实验
- Maven学习笔记 --- Maven入门笔记一
- 欢迎使用CSDN-markdown编辑器
- MySQL+Python3.5+Django+Ubuntu