怎么用Python递归式实现二叉树前序,中序,后序遍历
导读:本文共2032字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 记忆点:前序:VLR中序:LVR后序:LRV举例:一颗二叉树如下图所示:则它的前序、中序、后序遍历流程如下图所示:1.前序遍历classSolution:defpreorderTraversal(self,root:TreeNode):defpreorder(root:TreeNode):ifnotroot:returnres.append(root... ...
音频解说
目录
(为您整理了一些要点),点击可以直达。记忆点:
前序:VLR
中序:LVR
后序:LRV
举例:
一颗二叉树如下图所示:
则它的前序、中序、后序遍历流程如下图所示:
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.结果
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递归式实现二叉树前序,中序,后序遍历的详细内容,希望对您有所帮助,信息来源于网络。