会员
周边
众包
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
番茄起司汤
博客园
首页
新随笔
联系
订阅
管理
2019年7月18日
位运算的使用技巧
摘要: 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 番茄起司汤
阅读(190)
评论(0)
推荐(0)
2019年7月15日
红黑树的删除调整过程(转载)
摘要: 首先简单描述一下二叉搜索树的删除过程,可以分为以下四种情况 1. 要删除的节点没有左右孩子 2. 要删除的节点只有左孩子 3. 要删除的节点只有右孩子 4. 要删除的节点有左右孩子 对于第一种情况,直接删除。 如果要删除的节点只有左孩子,那么就让该节点的父亲结点指向该节点的左孩子,然后删除该节点,返
阅读全文
posted @ 2019-07-15 08:01 番茄起司汤
阅读(3433)
评论(0)
推荐(1)
2019年7月12日
红黑树的插入调整过程(转载)
摘要: 红黑树的特性: 红黑树中的每个结点包含五个域:color、key、left、right和parent。如果某结点没有一个子结点或父结点,则该结点相应的指针parent域包含值为NIL(NIL并不是空指针,后面会讲到)。把NIL视为指向红黑树的外结点(叶子)的指针,而把带关键字的结点视为红黑树的内结点
阅读全文
posted @ 2019-07-12 16:33 番茄起司汤
阅读(3030)
评论(0)
推荐(0)
AVL树旋转操作的C++实现(转载)
摘要: AVL树的介绍 AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的C++实现 1. AVL树节点 2. 旋转 如果在AVL树中进行插入或者删除节点,可能导致AVL树失去了平衡。这种失衡可以概括为以下四种状态: LL :LeftLeft,也称为"左左
阅读全文
posted @ 2019-07-12 10:29 番茄起司汤
阅读(309)
评论(0)
推荐(0)
2019年6月25日
特殊二叉树的判断(平衡二叉树,搜索二叉树,完全二叉树)
摘要: 平衡二叉树 判断是否为平衡二叉树,需要注意以下三点: 左子树是否为平衡二叉树 右子树是否为平衡二叉树 左右子树的高度差小于等于1 搜索二叉树 将二叉树进行中序遍历,得到的结果是完全升序的二叉树就是搜索二叉树。 完全二叉树 在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最
阅读全文
posted @ 2019-06-25 17:26 番茄起司汤
阅读(253)
评论(0)
推荐(0)
二叉树的非递归遍历
摘要: "先序遍历" 先序遍历可以简单的理解为: 首先访问根节点,如果根节点的左子树存在,那么递归的对根节点的左子树进行先序遍历,如果根节点的右子树存在,那么递归的对根节点的右子树进行先序遍历。访问顺序为父 左 右。 可以利用一个辅助栈完成非递归的先序遍历,我们先将根节点压入栈中,在栈非空的时候弹出辅助栈的
阅读全文
posted @ 2019-06-25 14:31 番茄起司汤
阅读(159)
评论(0)
推荐(0)
2019年6月11日
链表相关的leetcode重要题目
摘要: "Leetcode 92:反转链表II" 解决这道题需要三个步骤: 1. 找到需要反转的第一个节点。可以通过头节点前进m 1步,找到反转开始的位置。 2. 将需要反转的部分进行反转。参考 "Leetcode 206:反转链表" 。 3. 将反转部分与剩余部分进行链接。其中分为两种情况,m=1与m 1
阅读全文
posted @ 2019-06-11 23:31 番茄起司汤
阅读(178)
评论(0)
推荐(0)
2019年6月10日
实现特殊的栈和队列
摘要: 利用一个固定数组实现栈和队列 具有返回min功能的栈 使用两个栈,一个为data栈,一个为min栈。在进行push操作时,首先向data栈中push值,如果push的值小于min栈的栈顶,则向min栈中push这个值,如果大于等于min栈的栈顶,则再push一个min栈栈顶的值。在进行pop操作时,
阅读全文
posted @ 2019-06-10 17:52 番茄起司汤
阅读(217)
评论(0)
推荐(0)
堆以及堆排序
摘要: 堆的概念 堆是用数组实现的二叉树,它没有使用父指针或者子指针。利用数组的下标,就可以得到节点的父节点与子节点在数组中的位置。下标为i的节点,在不越界的情况下,它的左孩子坐标为2i+1,右孩子坐标为2i+2,父节点为(i 1)/2。 堆分为两种,大根堆与小根堆。在大根堆中,父节点的值比每一个子节点的值
阅读全文
posted @ 2019-06-10 09:10 番茄起司汤
阅读(159)
评论(0)
推荐(0)
2019年6月6日
荷兰国旗问题、快排以及BFPRT算法
摘要: 荷兰国旗问题 给定一个数组arr,和一个数num,请把小于num的数放数组的左边,等于num的数放在数组的中间,大于num的数放在数组的右边。要求额外空间复杂度O(1),时间复杂度O(N)。 这个问题的解决思路是这样的,首先划定一个小于区域,其右边界为less,划定一个大于区域,其左边界为more。
阅读全文
posted @ 2019-06-06 09:22 番茄起司汤
阅读(321)
评论(0)
推荐(0)
下一页
公告