手写算法:

/**

  • Decodes your encoded data to tree. *
  • @param {string} data
  • @return {TreeNode} */ var deserialize = function(data) { const dataArray = data.split(“,”); console.log(dataArray) return rdeserialize(dataArray); };

/**

  • Your functions will be called as such:
  • deserialize(serialize(root)); */

    function rserialize(root,str){ if (root === null) {

    1. str+= 'NONE,'

    } else {

    1. str += root.val + ",";
    2. str =rserialize(root.left,str)
    3. str =rserialize(root.right,str)

    } return str } function rdeserialize(data) { if (data[0]===’NONE’) {

    1. data.shift()
    2. return null

    } let root = new TreeNode(parseInt(data[0])) data.shift() root.left = rdeserialize(data) root.right = rdeserialize(data) return root } ```

手写题

  • 题目描述:渲染百万条结构简单的大数据时 怎么使用分片思想优化渲染

    1. <!DOCTYPE html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8" />
    5. <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    7. <title>Document</title>
    8. </head>
    9. <body>
    10. <button onclick="startRender()">点我呀~</button>
    11. <ul id="target"></ul>
    12. </body>
    13. <script>
    14. const total = 1000000
    15. const target = document.getElementById('target')
    16. const pageSize = 20
    17. let pageIndex = 0
    18. const pageCount = total / pageSize
    19. const startRender = () => {
    20. const render = () => {
    21. const fragment = document.createDocumentFragment()
    22. for (let i = 0; i < pageSize; i++) {
    23. const li = document.createElement('li')
    24. li.innerText = `hello, ${pageIndex * pageSize + i + 1}`
    25. fragment.appendChild(li)
    26. }
    27. target.appendChild(fragment)
    28. if (pageIndex < pageCount) {
    29. pageIndex++
    30. requestAnimationFrame(render)
    31. }
    32. }
    33. render()
    34. }
    35. </script>
    36. </html>