Python二叉树的遍历操作示例【前序遍历,中序遍历,后序遍历,层序遍历】
本文实例讲述了Python二叉树的遍历操作。分享给大家供大家参考,具体如下:
#coding:utf-8 """ @encoding:utf-8 @author:lixiang @email:lixiang_cn@foxmail.com @python_version:2 @time:2018/4/110:09 @more_info: 二叉树是有限个元素的集合,该集合或者为空、或者有一个称为根节点(root)的元素及两个互不相交的、分别被称为左子树和右子树的二叉树组成。 1二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 2二叉树的第i层至多有2^{i-1}个结点 3深度为k的二叉树至多有2^k-1个结点; 4对任何一棵二叉树T,如果其终端结点数为N0,度为2的结点数为N2,则N0=N2+1 5度是二叉树分支树,对于二叉树而言有0,1,2三种取值 不管是前中后序遍历,都是在当前规则下,无路可走时,输出根结点。 """ classTreeNode(object): def__init__(self,x,left=None,right=None): self.val=x self.left=left self.right=right defpre_traverse(root): """ 根左右 :paramroot: :return: """ ifnotroot: return printroot.val, pre_traverse(root.left) pre_traverse(root.right) defmid_travese(root): """ 左根右 :paramroot: :return: """ ifnotroot: return mid_travese(root.left) printroot.val, mid_travese(root.right) defafter_travese(root): """ 左右根 :paramroot: :return: """ ifnotroot: return after_travese(root.left) after_travese(root.right) printroot.val, deflevel_travese(root): ifnotroot: return queue=[] queue.append(root) whilequeue: cur=queue.pop(0) printcur.val, ifcur.left: queue.append(cur.left) ifcur.right: queue.append(cur.right) defdepth(root): ifnotroot: return0 left=depth(root.left) right=depth(root.right) returnmax(left,right)+1 if__name__=='__main__': """ tree是一个表示树根节点的对象 前序遍历1245891136710 中序遍历4285119163107 后序遍历4811952610731 层序遍历1234567891011 深度5 """ tree=TreeNode(1,TreeNode(2,TreeNode(4),TreeNode(5,TreeNode(8),TreeNode(9,left=TreeNode(11)))),TreeNode(3,TreeNode(6),TreeNode(7,left=TreeNode(10)))) print("\n前序遍历") pre_traverse(tree) print("\n中序遍历") mid_travese(tree) print("\n后序遍历") after_travese(tree) print("\n层序遍历") level_travese(tree) print("\n深度") print(depth(tree))
运行结果:
前序遍历
1245891136710
中序遍历
4285119163107
后序遍历
4811952610731
层序遍历
1234567891011
深度
5
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python编码操作技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
希望本文所述对大家Python程序设计有所帮助。