怎么用Python递归式实现二叉树前序,中序,后序遍历(python,开发技术)

时间:2024-05-05 14:55:43 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

记忆点:

怎么用Python递归式实现二叉树前序,中序,后序遍历

  • 前序:VLR

  • 中序:LVR

  • 后序:LRV

举例:

一颗二叉树如下图所示:

怎么用Python递归式实现二叉树前序,中序,后序遍历

则它的前序、中序、后序遍历流程如下图所示:

怎么用Python递归式实现二叉树前序,中序,后序遍历

1.前序遍历

classSolution:defpreorderTraversal(self,root:TreeNode):defpreorder(root:TreeNode):ifnotroot:returnres.append(root.val)preorder(root.left)preorder(root.right)res=[]preorder(root)returnres

2.中序遍历

classSolution:definorderTraversal(self,root:TreeNode):definorder(root:TreeNode):ifnotroot:returninorder(root.left)res.append(root.val)inorder(root.right)res=[]inorder(root)returnres

3.后序遍历

classSolution:defpostorderTraversal(self,root:TreeNode):defpostorder(root:TreeNode):ifnotroot:returnpostorder(root.left)res.append(root.val)postorder(root.right)res=[]postorder(root)returnres

4.测试

classTreeNode:def__init__(self,val=0,left=None,right=None):self.val=valself.left=leftself.right=right#用列表递归创建二叉树defcreateTree(root,list_n,i):ifi<len(list_n):iflist_n[i]=='null':returnNoneelse:root=TreeNode(val=list_n[i])root.left=createTree(root.left,list_n,2*i+1)root.right=createTree(root.right,list_n,2*i+2)returnrootreturnrootclassSolution:defpreorderTraversal(self,root:TreeNode):#前序defpreorder(root:TreeNode):ifnotroot:returnres.append(root.val)preorder(root.left)preorder(root.right)res=[]preorder(root)returnresdefinorderTraversal(self,root:TreeNode):#中序definorder(root:TreeNode):ifnotroot:returninorder(root.left)res.append(root.val)inorder(root.right)res=[]inorder(root)returnresdefpostorderTraversal(self,root:TreeNode):#后序defpostorder(root:TreeNode):ifnotroot:returnpostorder(root.left)postorder(root.right)res.append(root.val)res=[]postorder(root)returnresif__name__=="__main__":root=TreeNode()list_n=[1,2,3,4,5,6,7,8,'null',9,10]root=createTree(root,list_n,0)s=Solution()res_pre=s.preorderTraversal(root)res_in=s.inorderTraversal(root)res_post=s.postorderTraversal(root)print(res_pre)print(res_in)print(res_post)

5.结果

怎么用Python递归式实现二叉树前序,中序,后序遍历

6.补充

6.1N叉树前序遍历

"""#DefinitionforaNode.classNode:def__init__(self,val=None,children=None):self.val=valself.children=children"""classSolution:defpostorder(self,root:'Node')->List[int]:defseq(root):ifnotroot:returnres.append(root.val)forchildinroot.children:seq(child)res=[]seq(root)returnresN叉树后序遍历"""#DefinitionforaNode.classNode:def__init__(self,val=None,children=None):self.val=valself.children=children"""classSolution:defpostorder(self,root:'Node')->List[int]:defseq(root):ifnotroot:returnforchildinroot.children:seq(child)res.append(root.val)res=[]seq(root)returnres
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:怎么用Python递归式实现二叉树前序,中序,后序遍历的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Python集合与字典数据类型实例分析下一篇:

3 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18