Python二叉树定义与遍历方法实例分析

  

本文实例讲述了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__ '> if __name__==的__main__ '>   

更多关于Python相关内容感兴趣的读者可查看本站专题:《Python数据结构与算法教程》、《Python加密解密算法与技巧总结》,《Python编码操作技巧总结》,《Python函数使用技巧总结》,《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

Python二叉树定义与遍历方法实例分析