试图从Leetcode中的这个二叉搜索树中弄清楚数字排列看起来不正确 Python Java

问题描述

这是一个非常普遍的问题

因此,我正在leetcode.com上使用二进制搜索树进行一些练习。这对我没有意义。黄色高亮显示的1位于2的右侧,但3大于2,因此从技术上讲3不应位于右侧,而1则应位于左侧吗?如果有人对二进制搜索树一无所知

这是屏幕截图

enter image description here

这是数组顺序

[4,2,6,3,1,5]

解决方法

我认为问题只是关于Binary Tree,而不是Binary Search Tree,在这种情况下,左节点不需要比右节点小,这样就可以通过。

Python

class Solution:
    def addOneRow(self,root,val,depth):
        sentinel = TreeNode(None)
        sentinel.left = root
        levels = [sentinel]
        for _ in range(depth - 1):
            levels = [child for node in levels for child in (node.left,node.right) if child]

        for node in levels:
            node.left,node.left.left = TreeNode(val),node.left
            node.right,node.right.right = TreeNode(val),node.right

        return sentinel.left

Java

public final class Solution {
    public static final TreeNode addOneRow(
        final TreeNode root,final int val,final int depth
    ) {
        if (depth == 0 || depth == 1) {
            TreeNode sentinel = new TreeNode(val);
            sentinel.left = depth == 1 ? root : null;
            sentinel.right = depth == 0 ? root : null;
            return sentinel;
        }

        if (root != null && depth >= 2) {
            root.left = addOneRow(root.left,depth > 2 ? depth - 1 : 1);
            root.right = addOneRow(root.right,depth > 2 ? depth - 1 : 0);
        }

        return root;
    }
}

参考文献

  • 有关其他详细信息,请参见Discussion Board,在这里您可以找到许多具有各种languages且已被广泛接受的解决方案,包括低复杂度算法和渐近runtime / {{ 3}}分析memory1

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...