标签:条件 add 结构 app style 遍历 png none 有序二叉树
在计算机科学中,二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆
# 定义节点类 class Node(): def __init__(self,item): self.item = item self.left = None # 左叶子节点 self.right = None # 右叶子节点 # 定义二叉树类 class Terr(): def __init__(self): self.root = None # 添加数据 def addNode(self,item): node = Node(item) # 如果插入第一个节点的情况 if self.root == None: self.root = node return cur = self.root q = [cur] # 列表元素使我们进行遍历判断的节点 while q: nd = q.pop(0) if nd.left == None: nd.left = node return else: q.append(nd.left) if nd.right == None: nd.right = node return else: q.append(nd.right) # 使用 tree = Terr() for i in range(1, 8): tree.addNode(i)
def travel(self): cur = self.root q = [cur] while q: nd = q.pop(0) print(nd.item) if nd.left: q.append(nd.left) if nd.right: q.append(nd.right)
前序
# 跟左右 def forwoar(self,root): if root == None: return print(root.item) self.forwoar(root.left) self.forwoar(root.right)
中序
# 左跟右 def niddle(self, root): if root == None: return self.niddle(root.left) print(root.item) self.niddle(root.right)
后序
# 左右跟 def back(self,root): if root == None: return self.back(root.left) self.back(root.right) print(root.item)
# 定义节点类 class Node(): def __init__(self,item): self.item = item self.left = None self.right = None # 定义排序二叉树类 class SortTree(): def __init__(self): self.root = None # 重点:添加新节点 def add(self,item): node = Node(item) cur = self.root # 二叉树还没有节点的情况 if self.root == None: self.root = node return ‘‘‘ 二叉树有节点时循环比较当前节点的值与需要插入的节点的值的大小: 1.比当前节点值大,向右侧插入,并判断当前右侧是否为空,不是则cur = cur.right 2.比当前节点值小,向左侧插入,并判断当前左侧是否为空,不是则cur = cur.left 3.循环直到找到左侧或右侧满足条件的某个空位置结束,调出循环 ‘‘‘ while cur: #向右侧插入 if item > cur.item: if cur.right == None: cur.right = node break else: cur = cur.right else:#向左插入 if cur.left == None: cur.left = node break else: cur = cur.left # 使用中序的方法来获取有序二叉树的各个节点的值 def middle(self,root):#前序:左根右 if root == None: return self.middle(root.left) print(root.item) self.middle(root.right)
待续:
标签:条件 add 结构 app style 遍历 png none 有序二叉树
原文地址:https://www.cnblogs.com/zangyue/p/12098626.html