二叉搜索树与双向链表最直观java解法
二叉搜索树与双向链表
https://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5?tpId=13&&tqId=11179&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking
思路很简单,Convert函数得到的就是转换之后的双向链表头,转化出来的左子树连接到root,再将root连接到右子树,就可以了,运行时间11ms
public class Solution {
public TreeNode Convert(TreeNode pRootOfTree) {
if(pRootOfTree == null) return null;
TreeNode leftHead = Convert(pRootOfTree.left);
if (leftHead != null) {
TreeNode leftTail = leftHead;
while(leftTail.right != null) {
leftTail = leftTail.right;
}
leftTail.right = pRootOfTree;
pRootOfTree.left = leftTail;
}
TreeNode rightHead = Convert(pRootOfTree.right);
if (rightHead != null) {
rightHead.left = pRootOfTree;
pRootOfTree.right = rightHead;
}
return leftHead == null?pRootOfTree:leftHead;
}
}

