他们没有提到我问的问题。这些问题中只有关键字与我的问题匹配。
我测试代码并获得不同的结果。我不知道结果是不同的。原始问题在这里https://www.geeksforgeeks.org/convert-a-given-binary-tree-to-doubly-linked-list-set-2/
如果我这样编写代码,答案是正确的;
// Start from the rightmost node, traverse
// back using left pointers. While traversing,
// change right pointer of nodes
while (root != null && root.left != null)
{
node left = root.left;
left.right = root;
root = root.left;
}
答案是错误的。我只能打印出第一个节点。这意味着我没有成功修改正确的指针。我不知道为什么。
// Start from the rightmost node, traverse
// back using left pointers. While traversing,
// change right pointer of nodes
node help = null;
while (root != null && root.left != null)
{
help = root;
root.right = help;
//node left = root.left;
//left.right = root;
root = root.left;
}
正确答案可以打印出树中的所有数据。 错误的对象只能指出第一个元素,即树的根。
答案 0 :(得分:0)
此行
root.right = help;
应该是
root.left.right = help;