数据结构和算法 JAVA

栈:

栈是限制插入和插入只能在一个位置上进行的表,叫做栈的顶(top),对栈的基本操作有push进栈和pop出栈,前者是插入,后者删除最后插入的元素。由于栈是一个表,因此任何实现表的方法都能实现栈,显然ArrayList和LinkedList都支持栈操作.
单链表实现:通过在表的顶端插入实现push,删除 顶端元素实现pop,top考察顶端元素并返回他的值。
数组实现:相关操作theArray和topOfStack,将某个元素推入栈中,我们使用topOfStack加1,然后theArray【topOfStack】 = x,弹出栈元素的时候,返回theArray【topOfStack】然后topOfStack减1

队列:

队列(queue)也是表,使用队列时在一端插入,另一端删除
enqueue入队,它是在表的末端(队尾rear)插入一个元素;dequeue出队,它是删除并返回表的开头(队头front)的元素。
像栈一样,对于队列而言任何表实现都是合法的,对于每一种操作,链表和数组实现都是o(1)的。
数组实现在这里插入图片描述
解决办法:循环数组,只要front或back到达数组的尾端,他就又绕回到开头。如果front或back增1导致了超越了数组,那么其值就要重置到数组第一个位置。但是在保证enqueue的次数不会大于队列容量的应用中,使用回绕是没有必要的。

在这里插入图片描述在这里插入图片描述

树:

在这里插入图片描述
深度:从根到某节点唯一的路径的长
:从该节点往下查找,到一片树叶的最长路径的长。
因此,根的深度是0,所有树叶的高是0,一棵树的高是他的根的高,一棵树的深度等于它最深的树叶的深度,该深度等于树的高。图中,E的深度1高2,F深度1高1,树的高是3。
实现树的兄弟孩子表示法:****
class TreeNode{
Object element;
TreeNode firstChild;
TreeNode nextSibling;
}
在这里插入图片描述
使用兄弟孩子表示法表示如下:
在这里插入图片描述
前序遍历(根左右:首先访问根结点然后遍历左子树,最后遍历右子树。在遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树,如果二叉树为空则返回)
中序遍历(先左孩子结点,后根节点,再右孩子结点)
后序遍历(先做孩子节点,后右孩子结点,再根节点)
在这里插入图片描述
前序遍历:ABCDEFGHK
中序遍历:BDCAEHGKF
后序遍历:DCBHKGFEA

猜你喜欢

转载自blog.csdn.net/q1015189243/article/details/86089455