算法
却顾所来径
当你老了,回顾一生,就会发觉:什么时候出国读书、什么时候决定做第一份职业、何时选定了对象而恋爱、什么时候结婚,其实都是命运的巨变。只是当时站在三岔路口,眼见风云千樯,你作出抉择的那一日,在日记上,相当的沉闷和平凡,当时还以为是生命中普通的一天。
展开
-
红黑树的删除操作(包含所有情况)
以上是根据别人博客总结自己画出的红黑树删除操作的所有情况。红黑树删除难点在于情况多和复杂,要想完全掌握,必须知道红黑树所有删除情况,并且对于情况是如何一步步划分的思路要非常清晰,为什么这样划分等等。此外,容易忽视又非常重要的一点是:红黑树删除的初始情况,比如我上面的图开始情况思考一下为什么要删除节点D的左孩子都是等于nil(即为空,其实是因为要删除红黑树的任意一个节点,首先要像二叉排序树一样找...转载 2018-12-31 18:48:46 · 547 阅读 · 0 评论 -
红黑树的插入解析
以下讲解参考算法导论:首先回顾一下红黑树的性质:1、红黑树的所有结点颜色是红色或者黑色。2、根结点是黑色3、叶结点都为黑色4、红色节点的左右孩子结点为黑色(推论:红色节点的父结点一定为黑色)5、从树中的任意一个结点出发,到叶结点所有路径上黑色结点的个数相同。如根结点到叶结点有多条路径,每条路径上的黑色结点数一样。同理,其他结点也一样。接下来进行插入结点的操作。(1)...原创 2018-10-14 13:04:52 · 1939 阅读 · 0 评论 -
后序遍历非递归算法
后序遍历方法一://后序遍历void PostOrderWithoutRecursion(BTNode* root){ if (root == NULL) return; stack<btnode*> s; //pCur:当前访问节点,pLastVisit:上次访问节点 BTNode* pCur, *pLastVisit;...转载 2018-05-15 11:02:33 · 13480 阅读 · 1 评论 -
中序遍历非递归算法
中序遍历:方法一://中序遍历void InOrderWithoutRecursion1(BTNode* root){ //空树 if (root == NULL) return; //树非空 BTNode* p = root; stack<btnode*> s; while (!s.empty() || p...转载 2018-05-15 11:00:24 · 15942 阅读 · 3 评论 -
前序遍历的非递归算法
前序遍历方法一:void PreOrderWithoutRecursion1(BTNode* root){ if (root == NULL) return; BTNode* p = root; stack<btnode*> s; while (!s.empty() || p) { //边遍历边打印,并...转载 2018-05-15 10:57:08 · 19425 阅读 · 2 评论