链表是空节点,或者有一个值和一个指向下一个链表的指针,因此很多链表问题可以用递归来处理。
234. Palindrome Linked List (Easy)
题目要求:以 O(1) 的空间复杂度来求解。
切成两半,把后半段反转,然后比较两半是否相等。
725. Split Linked List in Parts(Medium)
101. Symmetric Tree (Easy)
1
/ 2 3
/ \ 4 5 6
层次遍历使用 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);
}
144. Binary Tree Preorder Traversal (Medium)
145. Binary Tree Postorder Traversal (Medium)
94. Binary Tree Inorder Traversal (Medium)
Trie,又称前缀树或字典树,用于判断字符串是否存在或者是否具有某种字符串前缀。
208. Implement Trie (Prefix Tree) (Medium)
计算器
矩阵最大面积
常用于在具有先序关系的任务规划中。
207. Course Schedule (Medium)
2, [[1,0]]
return true
2, [[1,0],[0,1]]
return false
题目描述:一个课程可能会先修课程,判断给定的先修课程规定是否合法。
本题不需要使用拓扑排序,只需要检测有向图是否存在环即可。
位排序
原文:https://www.cnblogs.com/coding-fairyland/p/12924878.html