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;
      }

  • 相关阅读:
    如何使用git提交代码
    Eclipse升级ADT
    android学习:android开发常见技巧设置,提高开发效率
    Apache -Common-lang包使用
    最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
    Asp.Net MVC entity framework模型验证
    Activity启动模式
    http服务器交互get,put,post,delete等说明
    js模块化插件开发
    Android Asynchronous Http Client异步网络请求使用
  • 原文地址:https://www.cnblogs.com/typeof/p/12271714.html
Copyright © 2011-2022 走看看