思路:
/**
* 已排链表的最后一个结点
*/
private TreeNode lastNode=null;
public TreeNode Convert(TreeNode pRootOfTree) {
if (pRootOfTree==null){
return null;
}
//获取其左子树双向链表的头结点
TreeNode head = Convert(pRootOfTree.left);
// 如果左子树为空,那么根节点root为此时双向链表的头节点
if (head==null){
head=pRootOfTree;
}
//连接当前结点和之前的链表
pRootOfTree.left=lastNode;
if (lastNode!=null) {
lastNode.right=pRootOfTree;
}
//更新最后一个结点
lastNode=pRootOfTree;
//安排右节点
Convert(pRootOfTree.right);
return head;
}