我在处理这个Leetcode问题,它要求对树进行扁平化(请参见:https://Leetcode.com/problems/flatten-binary-tree-to-linked-list),这就是我的代码,但我很困惑为什么输出返回的是相同的原始树。我不是直接修改树本身来返回吗?我好像少了什么?
class Solution {
public void flatten(TreeNode root) {
if (root == null) {
return;
}
Stack<TreeNode> stk = new Stack<>();
TreeNode trk = null;
TreeNode curr = root;
while (!stk.isEmpty()) {
while (curr != null) {
stk.push(curr);
if (trk == null) {
trk = root;
} else {
trk.left = null;
trk.right = curr;
trk = trk.right;
}
curr = curr.left;
}
curr = stk.pop();
curr = curr.right;
}
}
}
好吧,我找到我的错误了。在我如何遍历和更新指针导致树中的循环形成的一些问题中,最大和最明显的问题是,我最初从未将任何东西推送到堆栈中,因此while(!stk.isempty())
从未被调用,它几乎只返回原始树。我真蠢哈哈。
因此,将此运算符放在链中的任何位置也会影响onnext/onerror/oncomplete信号的执行*上下文,从链的开始直到下一次出现{@link publishOn(Scheduler)publishOn} 这让我有点困惑,因为当处理链中没有指定任何时,线程名称的打印值为: 从线程single-scheduler-1中保存person-如预期 从线程线程-13查找人员 从线程线程-6查找人员
但后者给了我下面的例外。这是为什么? java.lang.StringIndexOutOfBoundsException:String index超出范围:1 java.lang.StringIndexOutOfBoundsException:String index超出范围:1 java.lang.String.charat(String.java:658)在Scala.Collection.i
问题内容: 我想转换为,所以我写了一个const ,并尝试使用它进行转换。但是,代码会引发错误: 但是,如果我在分配后推迟类型转换,则代码可以解决。 我的问题: 这两个代码之间有什么区别吗? 为什么第一个会引发编译错误? 问题答案: 请参阅:https://golang.org/ref/spec#Constant_expressions 类型化常数的值必须始终可以由常数类型的值准确表示。以下常量表
当您可以调用递归方法而不是必须将递归方法设置为变量时,是否有一种简单的方法来理解? 例如... 只是调用递归函数遍历: self.recurse(node.left) self.recurse(node.right) 必须将递归函数设置为node。左和右。右: 节点。左=自我。递归(node.left) 节点。右=自我。递归(node.left) 另一个例子是删除bst中的一个节点,你必须将递归函
1.首先,我想确认一下从编程的角度,我们有“静态类型检查”和“动态类型检查,对把? 2.一般情况下我们用typescript做静态类型检查,检查源码里面自定义数据类型,对把? 3.那么,我们做的所谓的动态类型检查是不是指的那些库,比如Joi,ajv什么的,比如你点击一个按钮,然后调这个库来检查一个obj的schema,如果类面的key value类型都能对的上,我们就通过,如果类型对不上,我们就报
问题内容: 在Node.js Express模块的代码中,我碰到了这一行,为服务器设置继承: 我不确定这样做是什么- MDC文档(https://developer.mozilla.org/en/JavaScript/Guide/Inheritance_Revisited#prototype_and_ proto )似乎说我可以这样做: 确实,我做了这个测试: 看起来一样吗?所以,是的,我想知