算法基础

算法基础

  1. 数据结构的存储方式(数组/链表)

    • 数组与链表的特点
    • 队列
    • 散列表
    • 树(查找/插入/删除)
  2. 数据结构的基本操作(遍利/访问)

    • 两种形式:线性(for/while) 非线性(递归)
    • 数组 链表 二叉树 N叉树
  • 数组
void traverse(int[] arr) {
for (int i = 0; i < arr.length; i++) {
  // 迭代访问 arr[i]
}
}
  • 链表,兼具迭代和递归
/* 基本的单链表节点 */
class ListNode {
    int val;
    ListNode next;
}

void traverse(ListNode head) {
    for (ListNode p = head; p != null; p = p.next) {
        // 迭代访问 p.val
    }
}

void traverse(ListNode head) {
    // 递归访问 head.val
    traverse(head.next)
}
  • 二叉树,典型的非线性递归便历结构
/* 基本的二叉树节点 */
class TreeNode {
    int val;
    TreeNode left, right;
}

void traverse(TreeNode root) {
    traverse(root.left)
    traverse(root.right)
}
  • N叉树,与二叉树相似
/* 基本的 N 叉树节点 */
class TreeNode {
    int val;
    TreeNode[] children;
}

void traverse(TreeNode root) {
    for (TreeNode child : root.children)
        traverse(child)
}
原文地址:https://www.cnblogs.com/luckyCoder/p/12732971.html