摘要:概要本文只实现了二叉树基本的几种遍历,增删改查,预计明天写完,后面的功能也尽量完善定义数据结构左节点右节点先序遍历先遍历顺序,根节点,遍历左子树,遍历右子树中序遍历中序遍历中序遍历顺序,遍历左子树,根节点,遍历右子树后序遍历后序遍历后序遍历
概要
本文只实现了二叉树基本的几种遍历,增、删、改、查,预计明天写完,后面的功能也尽量完善
定义Node数据结构
class Node(object): def __init__(self, data): self.data = data self.lft = None #左节点 self.rgt = None #右节点先序遍历
class BTree(object): def __init__(self): self._root = None self._size = 0 def preOrder(self): """ 先遍历顺序: 1,根节点 2,遍历左子树 3,遍历右子树 """ btree = [] def recurse(node): if node != None: btree.append(node.data) recurse(node.lft) recurse(node.rgt) recurse(self._root) return btree
中序遍历
class BTree(object): def __init__(self): self._root = None self._size = 0 # 中序遍历 def inOrder(self): """ 中序遍历顺序: 1,遍历左子树 2,根节点 3,遍历右子树 """ btree = [] def recurse(node): if node != None: recurse(node.lft) btree.append(node.data) recurse(node.rgt) recurse(self._root) return btree
后序遍历
class BTree(object): def __init__(self): self._root = None self._size = 0 # 后序遍历 def postOrder(self): """ 后序遍历顺序: 1,遍历左子树 2,遍历右子树 3,根节点 """ btree = [] def recurse(node): if node != None: recurse(node.lft) recurse(node.rgt) btree.append(node.data) recurse(self._root) return btree
层序遍历
from collections import deque class BTree(object): def __init__(self): self._root = None self._size = 0 # 层序遍历 def leverOrder(self): q = deque() q.append(self._root) btree = [] while q: #dque是一个双向队列,先进先出是popleft node = q.popleft() btree.append(node.data) if node.lft: q.append(node.lft) if node.rgt: q.append(node.rgt) return btree
引用
github 源码Btree源码
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/44617.html
摘要:代码实现如下二叉树的创建与销毁二叉树的创建问题通过前序遍历的数组给定一串字符串,代表的是空树,其他的都是节点。 ⭐️本篇博客我要来和大家一起聊一聊数据结构中的二...
阅读 3316·2021-11-16 11:45
阅读 4384·2021-09-22 15:38
阅读 2840·2021-09-22 15:26
阅读 3346·2021-09-01 10:48
阅读 824·2019-08-30 15:56
阅读 713·2019-08-29 13:58
阅读 1486·2019-08-28 18:00
阅读 2159·2019-08-27 10:53