题解 | #二叉搜索树与双向链表#

二叉搜索树与双向链表

http://www.nowcoder.com/practice/947f6eb80d944a84850b0538bf0ec3a5

public class TreeNode {
    int val = 0;
    TreeNode left = null;
    TreeNode right = null;

    public TreeNode(int val) {
        this.val = val;

    }

}
*/
public class Solution {
    // 二叉搜索树中序遍历有序 
    // 我们假设二叉树就三个节点 
    // 为了使空间复杂度为 O(1) 
    // 令 left == pre , right == next;
    public TreeNode Convert(TreeNode root) {
        if(root == null) return null;
        // 左
       TreeNode mleft = Convert(root.left); // 到达最左边 但不确定是最左边的最右边是否有元素 就算是右 那也是 只有右 没有左
       TreeNode cur = mleft;
        while(cur != null && cur.right != null){
            cur.right.left = cur;
            cur = cur.right;
        }
        //根
        if(mleft != null){
            cur.right = root;
            root.left = cur;
        }
       //右 
        TreeNode mright = Convert(root.right); //到达最接近root 的右子节点 找到 mroot 的最左边 
        cur = mright;
        while(cur != null && cur.left != null){
            cur.left.right = cur;
            cur = cur.left;
        }
        if(mright != null){
            root.right = cur;
            cur.left = root;
        }
        return mleft != null ? mleft : root;
    }
}
全部评论

相关推荐

菠落蜜:这个是系统自动投的,不是hr主动打招呼。更抽象的还有ai回复
我的秋招日记
点赞 评论 收藏
分享
10-13 22:56
门头沟学院 C++
rt,鼠鼠的浪潮网签明天过期,鼠鼠是山东人,好像自己也能接受。之前的面试大厂基本挂干净了,剩下小米二面后在泡,问了下面试官没有挂,但要泡。还有海信似乎也通过了,不过在深圳,鼠鼠也不是很想去。其它还有一些公司应该陆陆续续还有一些面试,现在有些纠结是直接签了还是再等再面呢?大佬们能不能给鼠鼠提一些意见,万分感谢!!!
牛客78696106...:浪潮可不是开摆,当初我还是开发的时候我组长跟我说他们组有段时间天天1,2点走,早上5点就来,全组肝出来心肌炎,浪潮挣钱省立花可不是说说,当然也看部门,但是浪潮普遍就那dio样,而且你算下时薪就知道不高,没事也是9点半走,不然算你旷工
投递小米集团等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务