zoukankan      html  css  js  c++  java
  • 前端基础知识学习第六节(数据结构篇)

    1.

      如何判断一个单向链表是否有环?

      答案:
      1)创建哈希表。遍历链表,将链表各节点添加至哈希表中,添加前判断此节点是否已存在哈希表中,存在的话说明链表中存在环
      2)给节点添加visited访问标记。遍历链表,每访问一个新节点,使其visited为1,每次访问节点前先判断其visited是否为1,为1则是已访问过的节点,
      说明链表中存在环
      3)快慢指针法,设定快指针fast,慢指针slow,每次循环快指针fast移动两个位置,慢指针slow移动一个位置,如果快指针和慢指针在某一个节点相遇
      则说明链表中有环
      参考:https://segmentfault.com/a/1190000018439965

    2.

      使用递归和非递归实现二叉树的前序遍历?

      答案:
      let TreeNode = {
        val: 1,
        left: {
          val: 2,
          left: {
            val: 4
          },
          right: {
            val: 5
          }

        },
        right: {
          val: 3,
          left: {
            val: 6
          },
          right: {
            val: 7
          }
        }
      }
      // 递归方式
      function preOrderRecur(root) {
        let list = [];

        function preOrder(root) {
          if (!root) {
            return root;
          }

          list.push(root.val);
          
          preOrder(root.left);
          preOrder(root.right);
        }

        preOrder(root);

        return list;
      }
      // 非递归方式
      function preOrder(root) {
        let list = [];
        let stack = [ root ];

        while (stack.length) {
          const cur = stack.pop();
          const right = cur.right;
          const left = cur.left;

          list.push(cur.val);

          if (right) {
            stack.push(right);
          }

          if (left) {
            stack.push(left);
          }
        }

        return list;
      }

  • 相关阅读:
    简例 一次执行多条mysql insert语句
    javax/javaee-api/ Maven依赖
    关闭页面前提示或保存数据
    SpringMVC的controller方法上若需要参数 如User
    方正飞越 A600硬改BIOS激活win7的工具与方法。
    Win7下IE11点击无反应的解决方法
    WinXP局域网共享设置
    使用VHD,让Win XP和 Win2003 运行在内存中
    dd if=/dev/zero of=的含义是什么?Linux 下的dd命令使用详解
    win8.1点击“更改电脑设置”无反应(闪退)
  • 原文地址:https://www.cnblogs.com/typeof/p/12271714.html
Copyright © 2011-2022 走看看