思路:观察输出双向链表顺序可知为中序遍历,所以利用中序遍历,直接构造
/**
public class TreeNode {
int val = 0;
TreeNode left = null;
TreeNode right = null;
public TreeNode(int val) {
this.val = val;
}
}
*/
public class Solution {
TreeNode dummy;
TreeNode preNode;
public void inOrder(TreeNode root){
if(root == null){
return;
}
inOrder(root.left);
preNode.right = root;
root.left = preNode;
preNode = root;
inOrder(root.right);
}
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree == null){
return null;
}
dummy = new TreeNode(-1); //虚拟节点
preNode = dummy;
inOrder(pRootOfTree);
TreeNode head = dummy.right;
dummy.right = null;
head.left = null;
return head;
}
}