harrytothemoon / leetcodeAplus

Leetcode meeting note
2 stars 0 forks source link

[897] Increasing Order Search Tree #57

Open tsungtingdu opened 3 years ago

tsungtingdu commented 3 years ago
var increasingBST = function(root) {
    let arr = []
    traverse(root)
    for (let i = 1; i < arr.length; i++) {
        arr[i - 1].right = arr[i]
        arr[i - 1].left = null
    }
    arr[arr.length - 1].right = null
    arr[arr.length - 1].left = null
    return arr[0]

    function traverse(node) {
        if (node.left)  traverse(node.left)
        arr.push(node)
        if (node.right)  traverse(node.right)
    }
};
henry22 commented 3 years ago
/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
/**
 * @param {TreeNode} root
 * @return {TreeNode}
 */
var increasingBST = function(root) {
    return traverse(root, null)

    function traverse(node, preNode) {
        if (!node) {
            return preNode
        }

        const res = traverse(node.left, node)

        node.left = null
        node.right = traverse(node.right, preNode)

        return res
    }
};
harrytothemoon commented 3 years ago
var increasingBST = function(root) {
    let nodeList = []
    traverse(root)
    for (let i = 1; i <= nodeList.length; i++) {
        nodeList[i - 1].left = null
        if (i < nodeList.length){
            nodeList[i - 1].right = nodeList[i]          
        } else {
            nodeList[i - 1].right = null              
        }
    }
    return nodeList[0]

    function traverse (node) {
        if (!node) return
        traverse(node.left)
        nodeList.push(node)
        traverse(node.right)
    }
};