leetcode Hard题解 从先序遍历还原二叉树

不知道这题为什么算Hard,只是看起来好简单,写了十多分钟,一次通过,打败双100%。



var recoverFromPreorder = function (S) {

    let regexp = new RegExp(`(-*)(\\d+)`, 'g')

    let result = regexp.exec(S);

    let nodes = [];

    while (result) {

        let level = result[1].length;

        let value = Number(result[2] )

        if(!nodes [level] ){

            nodes [level] = []

        }

        //生成自己

        let node = new TreeNode(value);

        nodes [level].push( node );

         //挂到父亲下相应的位置

        if(level > 0){

            let parent = nodes [level-1][nodes [level-1].length-1];


            if(parent.left == null){

                parent.left = node;

            }else if (parent.right == null){

                parent.right = node;

            }else{

                console.log("error")

            }

        }

        result = regexp.exec(S)

    }

    if(n.length>0){

        return nodes [0][0];

    }

};

你可能感兴趣的:(leetcode Hard题解 从先序遍历还原二叉树)