Brush with js wins the offer (binary search trees and doubly-linked list)

Title Description

Enter a binary search tree, the binary search tree converted into a doubly linked list sorted. Requirements can not create any new node, point to only adjust the tree node pointer.

Cattle off network link

js code

/* 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
    }    

}

Guess you like

Origin www.cnblogs.com/dpnlp/p/yongjs-shua-jian-zhioffer-er-cha-sou-suo-shu-yu-sh.html