《图解数据结构 第二版》读书笔记
P33:C/C++程序中的数组或字符串结构,就是一种典型线性表的应用,在计算机中是属于内存中的静态数据结构,特性是使用连续的存储空间来存储。
P33:链表节点的内存分配是在执行时才会发生,所以不需要事先声明,这样能够充分节省内存,这种内存分配被称为“动态内存分配”。
P70:链表的特性是其各个数据项在计算机内存中的位置是不连续且随机存放的。
P73:在“单向链表”中第一个节点是“链表头指针”,指向最后一个节点的指针设为NULL,表示它是“链表尾”,不指向任何地方。
P74:在单向链表的各种操作中,“链表头指针”就显得相当重要,只要存在链表头指针,就可以遍历整个链表、进行加入和删除节点等操作。
P158:树叶或称终端节点:度数为零的节点就是树叶。
P159:非终端节点:树叶以外的节点。
P159:同代:在同一棵树中具有相同层数的节点。
P161:完全二叉树的补充定义:若一棵二叉树只有最下面两层上的节点的度数小于2,并且最下面一层的节点都集中在该层最左边的若干位置上,符合这样要求的二叉树就是完全二叉树。(二叉树的高度为h,所含的节点数小于2h-1)。
另一种定义:
P161:严格二叉树:二叉树中的每一个非终端节点均有非空的左右子树。
P166:所谓二叉树的遍历,最简单的说法就是“访问树中所有的节点各一次”,并且在遍历后,将树中的数据转化为线性关系。
P166:3种遍历方式——中序遍历、前序遍历、后序遍历。遍历方式一定是先左子树,后右子树。
P180::树转化为二叉树:(1)将节点的所有兄弟节点,用横线连接起来。(2)删掉所有与子节点间的链接,只保留与最左子节点的链接。(3)顺时针转45度。
P183:二叉树转化为树:(1)逆时针旋转45度。(2)按父子关系增加链接,同时删除兄弟节点间的链接。