题解 | #正则表达式匹配#

二叉搜索树与双向链表

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

public class Solution {
    TreeNode head;
    public TreeNode Convert(TreeNode pRootOfTree) {
        cvert(pRootOfTree, false);
        return head;
    }
    // isLeft:root是否是父节点的左子树。左子树返回子树链表的tail,右子树返回子树链表的head
    TreeNode cvert(TreeNode root, boolean isLeft){
        if (root == null) return null;
        TreeNode left = cvert(root.left, true);
        // 设置head节点
        if (head == null) head = root;
        root.left = left;
        if (left != null)    left.right = root;
        TreeNode right = cvert(root.right, false);
        root.right = right;
        if (right != null) right.left = root;
        // 对tail或head为null的情况,用root替代
        if (isLeft && right == null) right = root;
        if (!isLeft && left == null) left = root;
        return isLeft ? right : left;
    }
}

全部评论

相关推荐

头像
昨天 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
dongsheng66:如果想进大厂的话,在校经历没必要占这么大篇幅,可以把专业技能单独放一个专栏写,可以加个项目经历
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务