题目描述

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。

牛客网链接

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

js代码

/* function TreeNode(x) {
    this.val = x;
    this.left = null;
    this.right = null;
} */
//方法一
let queue = []
function Convert(pRootOfTree)
{
    // write code here
    if (!pRootOfTree) return null
    if (!pRootOfTree.left && !pRootOfTree.right) return pRootOfTree
    ConvertHelp(pRootOfTree)
    
    let head = queue.shift()
    let pre = head
    let now
    while (queue.length !== 0){
        now = queue.shift()
        now.left = pre
        pre.right = now
        pre = now
    }
    
    head.left = null
    now.right = null
    return head
}
function ConvertHelp(pRootOfTree) {
    if (!pRootOfTree) return
    ConvertHelp(pRootOfTree.left)
    queue.push(pRootOfTree)
    ConvertHelp(pRootOfTree.right)
}

//方法二
function Convert(pRootOfTree)
{   
    // write code here
    if (!pRootOfTree) return null
    let pre = null
    ConvertHelp(pRootOfTree)
    while (pRootOfTree.left) {
        pRootOfTree = pRootOfTree.left
    }
    return pRootOfTree
    
    
    function ConvertHelp(cur) {
        if (!cur) return
        if (cur.left) pre = ConvertHelp(cur.left)
        
        cur.left = pre
        if (pre) pre.right = cur
        pre = cur

        if (cur.right) pre = ConvertHelp(cur.right)
        return pre
    }    

}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄