在 Python 中根据前序遍历构建二叉搜索树
pythonserver side programmingprogramming更新于 2025/11/14 15:08:17
假设我们必须创建一个与给定前序遍历相匹配的二叉搜索树。因此,如果前序遍历类似于 [8,5,1,7,10,12],则输出将为 [8,5,10,1,7,null,12],因此树将为 −

为了解决这个问题,我们将遵循以下步骤 −
- root := 前序遍历列表的第 0 个节点
- stack := a stack,并将 root 推送到 stack
- 对于前序列表的第二个元素中的每个元素 i
- i := a值为 i 的节点
- 如果 i 的值 < 栈顶元素,则
- 栈顶节点左侧 := i
- 将 i 插入栈中
- 否则
- 当栈不为空时,且栈顶元素值 < i 的值
- 最后一个 := 栈顶
- 从栈中弹出元素
- 最后一个节点右侧 := i
- 将 i 插入栈中
- 当栈不为空时,且栈顶元素值 < i 的值
- 返回根节点
让我们看看下面的实现以便更好地理解 −
示例
class Solution(object): def bstFromPreorder(self, preorder): """ :type preorder: List[int] :rtype: TreeNode """ root = TreeNode(preorder[0]) stack = [root] for i in preorder[1:]: i = TreeNode(i) if i.val<stack[-1].val: stack[-1].left = i stack.append(i) else: while stack and stack[-1].val<i.val: last = stack.pop(-1) last.right = i stack.append(i) return root
输入
[8,5,1,7,10,12]
输出
[8,5,10,1,7,null,12]
相关文章
有用资源
python 参考教程 - 该教程包含有关 python 的更多信息:https://www.cainiaomax.com/python/

