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

二叉搜索树与双向链表

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

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */

function inorder(pRootOfTree) {
    // 使用中序遍历
    if (!pRootOfTree) return [null, null];
    let [leftH, leftT] = inorder(pRootOfTree.left);
    if (leftT) {
        leftT.right = pRootOfTree;
        pRootOfTree.left = leftT;
        // 将左子树的末尾与当前节点头相连接
    }
    let [rightH, rightT] = inorder(pRootOfTree.right);
    if (rightH) {
        pRootOfTree.right = rightH;
        rightH.left = pRootOfTree;
        // 将右子树的开头与当前节点尾相连接
    }
    return [leftH ? leftH : pRootOfTree, rightT ? rightT : pRootOfTree];
    // 返回的结果永远是树的最开头和树的最结尾,如果为空,则是当前的节点进行替换
}


function Convert(pRootOfTree) {
    [leftH, rightT] = inorder(pRootOfTree);
    console.log(leftH, rightT);
    return leftH;
}
module.exports = {
    Convert: Convert,
};

全部评论

相关推荐

浩浩没烦恼:一二面加起来才一个小时? 我一面就一个小时多了
点赞 评论 收藏
分享
阿武同学:基本信息保留前面三行,其他的可以全部删掉,邮箱最重要的你没写,主修课程精简到8个以内,实习里面2/3/4都是水内容的,非要写的话建议两到三句话,项目经历排版优化下,自我评价缩到三行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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