其他分享
首页 > 其他分享> > 学习数据结构的框架思维

学习数据结构的框架思维

作者:互联网

学习数据结构的框架思维

1. 数据结构千变万化,但万变不离宗

最高层的抽象,数据结构只有两种:数组和链表。
数组和链表才是「结构基础」,散列表、栈、队列等都可以看成是上层建筑,

依次来讲解‘上层建筑’怎么通过结构基础来实现

总结:没有完美的数据结构

2、数据结构的操作:遍历 + 访问,具体一点:增删改查
遍历 + 访问:线性/非线性的
线性:for / while 为代表,非线性:递归为代表
数组遍历框架

void traverse(int[] arr) {
    for (int i = 0; i < arr.length; i++) {
        // 访问 arr[i]
    }
}```
**二叉树遍历框架,典型的非线性递归遍历结构:**

```java
void traverse(TreeNode root) {
    traverse(root.left)
    traverse(root.right)
}

上面只是最简单的形式,可以随意改造

链表遍历框架,兼具线性和非线性遍历结构:

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

void traverse(ListNode head) {
    // 访问 head.val
    traverse(head.next)
}

二叉树框架又可以扩展为N叉树遍历框架:

void traverse(TreeNode root) {
    for (TreeNode child : root.children)
        traverse(child)
}

N 叉树的遍历又可以扩展为图的遍历,因为,图就是好几 N 叉棵树的结合体。你说图是可能出现环的?这个很好办,用个布尔数组 visited 做标记就行了

所谓框架,就是说不管具体问题是什么,这些代码都是永远无法脱离的结构,你可以把这个结构作为大纲,根据具体问题在框架上添加代码就行了。

3、为什么算法总是和数据结构同时出现
数据结构是工具,算法是通过合适的工具解决问题的方法。
初学算法的时候,一定要从第二点上面从框架上看问题,而不是纠结于细节问题,

标签:思维,traverse,遍历,框架,链表,数组,数据结构
来源: https://blog.csdn.net/A13526_/article/details/120917637