已知一个二叉树的先序遍历序列和中序遍历序列,但其中一些节点的值可能相同。请你返回所有满足条件的二叉树。二叉树在数组中的顺序是任意的。
区块链毕设网qklbishe.com为您提供问题的解答
已知一个二叉树的先序遍历序列和中序遍历序列,但其中一些节点的值可能相同。请你返回所有满足条件的二叉树。二叉树在数组中的顺序是任意的。
回溯问题。每次循环返回所有可能子树的集合。
class Solution: def getBinaryTrees(self , preOrder , inOrder ): if preOrder == inOrder == []: return [-1] res = []; root = preOrder[0] for i in range(len(inOrder)): if inOrder[i] == root: leftInOrder, rightInOrder = inOrder[:i], inOrder[i+1:] leftPreOrder, rightPreOrder = preOrder[1:i+1], preOrder[i+1:] leftChildren = self.getBinaryTrees(leftPreOrder, leftInOrder) rightChildren = self.getBinaryTrees(rightPreOrder, rightInOrder) for leftChild in leftChildren: for rightChild in rightChildren: root_node = ListNode(root) root_node.left = leftChild if leftChild != -1 else None root_node.right = rightChild if rightChild != -1 else None res.append(root_node) return res
07:37
以上就是关于问题已知一个二叉树的先序遍历序列和中序遍历序列,但其中一些节点的值可能相同。请你返回所有满足条件的二叉树。二叉树在数组中的顺序是任意的。 的答案
欢迎关注区块链毕设网-
专业区块链毕业设计成品源码,定制。
区块链NFT链游项目方科学家脚本开发培训