二叉搜索树与双向链表最直观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; } }