class Solution {
public:
void search(TreeNode* root, TreeNode*& dummy){
if(root == nullptr)
return;
search(root->left, dummy);
dummy->right = root;
dummy = dummy->right;
search(root->right, dummy);
}
TreeNode* increasingBST(TreeNode* root) {
TreeNode* dummy = new TreeNode();
TreeNode* itr = dummy;
search(root, dummy);
return itr->right;
}
};
大家好,
我不想创建新节点,而是想更改链接。有人能帮我理解为什么这个解决方案不起作用吗?
代码的问题是没有清除当前dummy
节点的left
引用。结果树不应该留下子树,通过保留这些子树,您就创建了循环。所以清除左
:
search(root->left, dummy);
root->left = nullptr; // <--
dummy->right = root;
dummy = root;
search(root->right, dummy);
请注意,dummy=dummy->right
等效于dummy=root
(也已更改)。
这是来自leetcode的问题。它说 给定二叉搜索树的根,按顺序重新排列树,使树中最左边的节点现在是树的根,每个节点没有左子节点,只有一个右子节点。 例2:, 我的代码几乎与下面相同, 在输入[2,1,4,null,null,3]之前,它可以很好地处理多个输入。实际上,它最终还是返回了,但我仍然收到了“超过时间限制”的错误。我发现有一个类似的解决方案,但它激活了上面的两行, 那就行了。我不明白为什
下面是我的密码 这里是错误 10-30 02:47:02.699 2195-2195/com。srg。ibc。任命申请书W/EGL_genymotion﹕ 未实施eglSurfaceAttrib 10-30 02:47:03.075 2195-2195/com。srg。ibc。任命应用程序E/WindowManager﹕ 活动网。srg。ibc。任命申请。CalendarView已泄漏Window
给定一个二维板和一个单词,找出这个单词是否存在于网格中。 这个词可以由顺序相邻单元格的字母构成,其中“相邻”单元格是那些水平或垂直相邻的单元格。同一个字母单元格不能使用不止一次。 例如,给定 这是典型的DFS+回溯解决方案。它将与进行比较。如果它们匹配,则将更改为以将其标记为已访问。然后移动到下一个(即)并将其与当前邻居进行比较(通过递归进行)。 下面是我的代码,这是不工作。我试着调试,但我觉得在
我正在为Java中的Peg纸牌游戏开发一个解决方案。然而,我的解决方案似乎无法解决游戏。 我正在使用“标准”版本,所以董事会看起来像: 0为空,1为钉,2为空 所需的电路板状态为 我的Solutions()方法是这样工作的: 沿
我想将第一行与来自user的输入隔离为VIX、SPX和VOL。然而,在这样的数据库中,我不知道这些变量是在哪个组合中保存的。 也就是说,我们可以将VIX设为Var1,SPX设为Var2,VOL设为Var3,也可以将VOL设为Var1,SPX设为Var2,VIX设为Var3。在这种情况下,可以有6种组合。 我可以将字符串串联起来,在R中创建所有6种可能性,并进行行查找。但我正在寻找一个更简单的算法。