如何解决试图从Leetcode中的这个二叉搜索树中弄清楚数字排列看起来不正确 Python Java
这是一个非常普遍的问题
因此,我正在leetcode.com上使用二进制搜索树进行一些练习。这对我没有意义。黄色高亮显示的1位于2的右侧,但3大于2,因此从技术上讲3不应位于右侧,而1则应位于左侧吗?如果有人对二进制搜索树一无所知
这是屏幕截图
这是数组顺序
[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}}分析memory,1 。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。