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

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务