本文实例讲述了Python二叉树定义与遍历方法。分享给大家供大家参考,具体如下:
创新互联专注于驿城企业网站建设,自适应网站建设,电子商务商城网站建设。驿城网站建设公司,为驿城等地区提供建站服务。全流程按需网站开发,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务二叉树基本概述:
二叉树是有限个元素的几个,如果为空则为空二叉树,或者有一个结点称之为根节点,分列根节点两侧的为二叉树的左右子节点,二叉树有如下的性质:
1. 二叉树的每个结点不存在度大于2的结点
2. 二叉树的第i层至多有2^{i-1}个结点
3. 深度为k的二叉树至多有2^k - 1个结点
4. 二叉树中,度为0的结点数N0比度为2的结点数N2大1,即存在N2 + 1 = N0
Python代码:
#coding:utf-8 'BiTree' class Node(object): 'Node Defination' def __init__(self,item): self.item = item self.left = None self.right = None class Tree(object): 'Bitree Defination' def __init__(self): self.root = None def add(self,item): node = Node(item) if self.root is None: self.root = node else: q = [self.root] while True: pop_node = q.pop(0) if pop_node.left is None: pop_node.left = node return elif pop_node.right is None: pop_node.right = node return else: q.append(pop_node.left) q.append(pop_node.right) def traverse(self):#层次遍历 if self.root is None: return None q = [self.root] res = [self.root.item] while q != []: pop_node = q.pop(0) if pop_node.left is not None: q.append(pop_node.left) res.append(pop_node.left.item) if pop_node.right is not None: q.append(pop_node.right) res.append(pop_node.right.item) return res def preorder(self,root): #先序遍历 if root is None: return [] result = [root.item] left_item = self.preorder(root.left) right_item = self.preorder(root.right) return result + left_item + right_item def inorder(self,root): #中序遍历 if root is None: return [] result = [root.item] left_item = self.inorder(root.left) right_item = self.inorder(root.right) return left_item + result + right_item def postorder(self,root): #后序遍历 if root is None: return [] result = [root.item] left_item = self.postorder(root.left) right_item = self.postorder(root.right) return left_item + right_item + result if __name__=='__main__': t = Tree() for i in range(10): t.add(i) print "层序遍历:",t.traverse() print "先序遍历:",t.preorder(t.root) print "中序遍历:",t.inorder(t.root) print "后序遍历:",t.postorder(t.root)
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。