摘要: 1. 与运算( & ) 判断奇偶 : x & 1 = 0 为偶 x & (x 1) 将最右边的1变为0 可以用来检测一个数是不是2的幂次,如果 一个数为2的幂次,那么它的二进制中只有一个1,将1消去后,应该返回1 x & (x +1) 将右边连续的1变为0 2. 或运算( | ) x | 1将最后一 阅读全文
posted @ 2019-07-18 19:55 番茄起司汤 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 首先简单描述一下二叉搜索树的删除过程,可以分为以下四种情况 1. 要删除的节点没有左右孩子 2. 要删除的节点只有左孩子 3. 要删除的节点只有右孩子 4. 要删除的节点有左右孩子 对于第一种情况,直接删除。 如果要删除的节点只有左孩子,那么就让该节点的父亲结点指向该节点的左孩子,然后删除该节点,返 阅读全文
posted @ 2019-07-15 08:01 番茄起司汤 阅读(3376) 评论(0) 推荐(1) 编辑
摘要: 红黑树的特性: 红黑树中的每个结点包含五个域:color、key、left、right和parent。如果某结点没有一个子结点或父结点,则该结点相应的指针parent域包含值为NIL(NIL并不是空指针,后面会讲到)。把NIL视为指向红黑树的外结点(叶子)的指针,而把带关键字的结点视为红黑树的内结点 阅读全文
posted @ 2019-07-12 16:33 番茄起司汤 阅读(2984) 评论(0) 推荐(0) 编辑
摘要: AVL树的介绍 AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的C++实现 1. AVL树节点 2. 旋转 如果在AVL树中进行插入或者删除节点,可能导致AVL树失去了平衡。这种失衡可以概括为以下四种状态: LL :LeftLeft,也称为"左左 阅读全文
posted @ 2019-07-12 10:29 番茄起司汤 阅读(300) 评论(0) 推荐(0) 编辑
摘要: 平衡二叉树 判断是否为平衡二叉树,需要注意以下三点: 左子树是否为平衡二叉树 右子树是否为平衡二叉树 左右子树的高度差小于等于1 搜索二叉树 将二叉树进行中序遍历,得到的结果是完全升序的二叉树就是搜索二叉树。 完全二叉树 在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最 阅读全文
posted @ 2019-06-25 17:26 番茄起司汤 阅读(250) 评论(0) 推荐(0) 编辑
摘要: "先序遍历" 先序遍历可以简单的理解为: 首先访问根节点,如果根节点的左子树存在,那么递归的对根节点的左子树进行先序遍历,如果根节点的右子树存在,那么递归的对根节点的右子树进行先序遍历。访问顺序为父 左 右。 可以利用一个辅助栈完成非递归的先序遍历,我们先将根节点压入栈中,在栈非空的时候弹出辅助栈的 阅读全文
posted @ 2019-06-25 14:31 番茄起司汤 阅读(156) 评论(0) 推荐(0) 编辑
摘要: "Leetcode 92:反转链表II" 解决这道题需要三个步骤: 1. 找到需要反转的第一个节点。可以通过头节点前进m 1步,找到反转开始的位置。 2. 将需要反转的部分进行反转。参考 "Leetcode 206:反转链表" 。 3. 将反转部分与剩余部分进行链接。其中分为两种情况,m=1与m 1 阅读全文
posted @ 2019-06-11 23:31 番茄起司汤 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 利用一个固定数组实现栈和队列 具有返回min功能的栈 使用两个栈,一个为data栈,一个为min栈。在进行push操作时,首先向data栈中push值,如果push的值小于min栈的栈顶,则向min栈中push这个值,如果大于等于min栈的栈顶,则再push一个min栈栈顶的值。在进行pop操作时, 阅读全文
posted @ 2019-06-10 17:52 番茄起司汤 阅读(212) 评论(0) 推荐(0) 编辑
摘要: 堆的概念 堆是用数组实现的二叉树,它没有使用父指针或者子指针。利用数组的下标,就可以得到节点的父节点与子节点在数组中的位置。下标为i的节点,在不越界的情况下,它的左孩子坐标为2i+1,右孩子坐标为2i+2,父节点为(i 1)/2。 堆分为两种,大根堆与小根堆。在大根堆中,父节点的值比每一个子节点的值 阅读全文
posted @ 2019-06-10 09:10 番茄起司汤 阅读(157) 评论(0) 推荐(0) 编辑
摘要: 荷兰国旗问题 给定一个数组arr,和一个数num,请把小于num的数放数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)。 这个问题的解决思路是这样的,首先划定一个小于区域,其右边界为less,划定一个大于区域,其左边界为more。 阅读全文
posted @ 2019-06-06 09:22 番茄起司汤 阅读(307) 评论(0) 推荐(0) 编辑