本文实例讲述了Python二叉树定义与遍历方法。分享给大家供大家参考,具体如下:
<强>二叉树基本概述:强>
二叉树是有限个元素的几个,如果为空则为空二叉树,或者有一个结点称之为根节点,分列根节点两侧的为二叉树的左右子节点,二叉树有如下的性质:
1。二叉树的每个结点不存在度大于2的结点
2. 二叉树的第我层至多有2 ^{张}个结点
3.深度为k的二叉树至多有2 ^ k - 1个结点
4. 二叉树中,度为0的结点数N0比度为2的结点数N2大1,即存在N2 + 1=N0
<强> Python代码:强>
utf - 8编码: “BiTree” 类节点(对象): 节点给出的 def __init__(自我,项): 自我。项=项 自我。左=没有 自我。正确的=没有 类树(对象): “Bitree定义” def __init__(自我): 自我。根=没有 def添加(自我,项): 节点=节点(项) 如果自我。根是没有: 自我。根节点=其他: q=[self.root] 而真正的: pop_node=q.pop (0) 如果pop_node。左边是没有: pop_node。左=节点 返回 elif pop_node。右边是没有: pop_node。正确的=节点 返回 其他: q.append (pop_node.left) q.append (pop_node.right) def导线(自我):#层次遍历 如果自我。根是没有: 回来没有 q=[self.root] res=[self.root.item] 尽管问!=[]: pop_node=q.pop (0) 如果pop_node。离开并不是没有: q.append (pop_node.left) res.append (pop_node.left.item) 如果pop_node。权利不是没有: q.append (pop_node.right) res.append (pop_node.right.item) 返回res def预订(自我,根):#先序遍历 如果没有:根 返回[] 结果=[root.item] left_item=self.preorder (root.left) right_item=self.preorder (root.right) 返回结果+ left_item + right_item def”(自我,根):#中序遍历 如果没有:根 返回[] 结果=[root.item] left_item=self.inorder (root.left) right_item=self.inorder (root.right) 返回left_item + + right_item结果 def后缀次序(自我,根):#后序遍历 如果没有:根 返回[] 结果=[root.item] left_item=self.postorder (root.left) right_item=self.postorder (root.right) 返回left_item + right_item +结果 if __name__==癬_main__”: t=树() 因为我在范围(10): t.add(我) 打印”层序遍历:“,t.traverse () 打印”先序遍历:“,t.preorder (t.root) 打印”中序遍历:“,t.inorder (t.root) 打印”后序遍历:“,t.postorder (t.root) >之前输出结果:
层序遍历:[0,1,2,3,4,5,6,7,8,9]
引用>
先序遍历:[0、1、3、7、8、4、9、2、5、6]
中序遍历:[1 7、3、8日,9日4 0,5、2、6]
后序遍历:[7 8 3、9、4、1、5、6 2 0]这里对于
if __name__==癬_main__”: “让一个脚本可输入的和可执行的” >之前意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行。
这里通过一个示例进行解释:
# test.py def func (): 打印“我们在% s % __name__ if __name__==癬_main__”: 函数() >之前输出结果:
我们的__main__
引用>说明如果语句中的内容被执行了,调用了<代码> func() 代码>函数,现在在另一个模块中调用func函数
#测试 从测试导入函数 函数() >之前输出结果:
我们在模组
引用>也就是说如果条件中的内容没有执行。
<强>总结:强>
如果直接执行某个*。py文件,该文件中<代码> if __name__==的__main__ '> 代码是正确的,相当于调式本模块的代码,如果是从另一个模块(testtest.py)通过进口导入该文件的时候,这时__name__就是这个模块的名字(测试)而不是__main__,总之在调式代码的时候加上<代码> if __name__==的__main__ '> 代码中加入调试代码,可以让步模块调用的时候不执行调式代码,如果想排查本模块代码的问题时,直接进行调试执行
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》,《Python编码操作技巧总结》,《Python函数使用技巧总结》,《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》
Python二叉树定义与遍历方法实例分析