Leetcode练习3之数据结构

链表

链表是空节点,或者有一个值和一个指向下一个链表的指针,因此很多链表问题可以用递归来处理。

8. 回文链表

 

234. Palindrome Linked List (Easy)

 

Leetcode / 力扣

 

题目要求:以 O(1) 的空间复杂度来求解。

 

切成两半,把后半段反转,然后比较两半是否相等。

 

9. 分隔链表

 

725. Split Linked List in Parts(Medium)

 

递归

9. 树的对称

101. Symmetric Tree (Easy)

前中后序遍历

    1
   / \
  2   3
 / \   \
4   5   6
  • 层次遍历顺序:[1 2 3 4 5 6]
  • 前序遍历顺序:[1 2 4 5 3 6]
  • 中序遍历顺序:[4 2 5 1 3 6]
  • 后序遍历顺序:[4 5 2 6 3 1]

层次遍历使用 BFS 实现,利用的就是 BFS 一层一层遍历的特性;而前序、中序、后序遍历利用了 DFS 实现。

前序、中序、后序遍只是在对节点访问的顺序有一点不同,其它都相同。

① 前序

void dfs(TreeNode root) {
    visit(root);
    dfs(root.left);
    dfs(root.right);
}

② 中序

void dfs(TreeNode root) {
    dfs(root.left);
    visit(root);
    dfs(root.right);
}

③ 后序

void dfs(TreeNode root) {
    dfs(root.left);
    dfs(root.right);
    visit(root);
}

1. 非递归实现二叉树的前序遍历

144. Binary Tree Preorder Traversal (Medium)

2. 非递归实现二叉树的后序遍历

145. Binary Tree Postorder Traversal (Medium)

3. 非递归实现二叉树的中序遍历

94. Binary Tree Inorder Traversal (Medium)

Trie

Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。

1. 实现一个 Trie

208. Implement Trie (Prefix Tree) (Medium)

栈和队列

计算器

哈希表

字符串

2. 字符串循环移位

编程之美 2.17

数组与矩阵

矩阵最大面积

拓扑排序

常用于在具有先序关系的任务规划中。

1. 课程安排的合法性

207. Course Schedule (Medium)

Leetcode / 力扣

2, [[1,0]]
return true
2, [[1,0],[0,1]]
return false

题目描述:一个课程可能会先修课程,判断给定的先修课程规定是否合法。

本题不需要使用拓扑排序,只需要检测有向图是否存在环即可。

位运算

位排序

猜你喜欢

转载自www.cnblogs.com/coding-fairyland/p/12924878.html