树被压平的困惑



我正在做这个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())从来没有被调用,它只是返回原始树。我真笨,哈哈。

相关内容

  • 没有找到相关文章

最新更新