从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉搜索树,输出所有可能生成此树的数组。
示例:
给定如下二叉树
2
/ \
1 3
返回:
[
[2,1,3],
[2,3,1]
]
通过次数7,758提交次数16,176
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/bst-sequences-lcci
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
做法:递归
又是看不懂题目的一天,做法详见:
作者:Jiang_Kun
链接:https://leetcode-cn.com/problems/bst-sequences-lcci/solution/mian-shi-ti-0409-er-cha-sou-suo-shu-xu-lie-by-jian/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
# Definition for a binary tree node.
# class TreeNode:
# def __init__(self, x):
# self.val = x
# self.left = None
# self.right = None
class Solution:
def BSTSequences(self, root: TreeNode) -> List[List[int]]:
res = []
if root is None:return [[]]
temp = [root.val]
def help(root, queue, path):
if root.left:
queue.append(root.left)
if root.right:
queue.append(root.right)
if len(queue) == 0:
res.append(temp + path)
for i, next_root in enumerate(queue):
next_queue = queue[:i] + queue[i+1:]
help(next_root, next_queue, path + [next_root.val])
help(root, [], [])
return res