class Solution {
public TreeNode convertBiNode(TreeNode root) {
Stack<TreeNode>stack=new Stack<>();
TreeNode res=new TreeNode(-1);
TreeNode parent=res;
TreeNode cur=root;
while (cur!=null ||!stack.isEmpty()){
//先遍历左子树
while (cur!=null){
stack.push(cur);
cur=cur.left;
}
//最后一个肯定是0,0出栈
TreeNode p=stack.pop();
//左侧置空
//右侧指向当前节点
parent.right=p;
parent=parent.right;
parent.left=null;
cur=p.right;
}
return res.right;
}
}
当我们使用这段代码的时候,会报下面的错误Error - Found cycle in the TreeNode,
parent.right=p;
parent.left=null;
parent=parent.right;
我们要改成这样的,parent=右子树的时候,在赋值给左子树为null
parent.right=p;
parent=parent.right;
parent.left=null;