刷题系列 - 给出前序和中序遍历队列,构造对应二叉树
既然中序和后序队列构成二叉树写了,就把前序和中序一做吧。
原理其实也很简单,前序队列第一个点就是根节点,再中序队列里面这个根节点可以分出左右两个树的两个中序队列,然后可以按照左右树的节点数量,再前序节点里面分出对应两组前序队列;然后反复递归即可。
#Definitionforabinarytreenode.#classTreeNode:#def__init__(self,x):#self.val=x#self.left=None#self.right=NoneclassSolution:defbuildTree(self,preorder:List[int],inorder:List[int])->TreeNode:ifinorder==[]:returnNoneelse:iflen(inorder)==1:returnTreeNode(inorder[0])else:RootVal=preorder[0]currentNode=TreeNode(RootVal)inorderLeft=inorder[:inorder.index(RootVal)]inorderRight=inorder[inorder.index(RootVal)+1:]preorder.pop(0)preorderLeft=preorder[:len(inorderLeft)]preorderRight=preorder[-len(inorderRight):]currentNode.left=self.buildTree(preorderLeft,inorderLeft)currentNode.right=self.buildTree(preorderRight,inorderRight)returncurrentNode
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。