摘要: 用c++实现了一个BinarySearchTree的模板类其他都很简单,重点说一下删除结点的方法。如果结点是一片叶子,那么可以立即被删除;如果结点只有一个左儿子或一个右儿子,则左儿子或右儿子代替结点位置即可;复杂的情况是有两个儿子,可以用被删除节点A的左子树的最右节点或者A的右子树的最左节点作为替代... 阅读全文
posted @ 2016-01-25 23:57 zhangbaochong 阅读(1479) 评论(2) 推荐(1) 编辑
摘要: 给定一个值,将链表小于该值得结点放到左边,大于该值得放到右边例如:Given1->4->3->2->5->2andx= 3,return1->2->2->4->3->5.思路:分别将值大于小于给定值得结点生成另外两个链表,最后再将这两个链表相连代码: 1 /** 2 * Definition fo... 阅读全文
posted @ 2016-01-25 19:07 zhangbaochong 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 二叉排序树(Binary Sort Tree)又称二叉查找树(Binary Search Tree),亦称二叉搜索树。定义:二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点... 阅读全文
posted @ 2016-01-25 16:31 zhangbaochong 阅读(437) 评论(0) 推荐(0) 编辑
摘要: 1 #include 2 #include 3 #include 4 using namespace std; 5 6 int main() 7 { 8 int ia[] = { 0, 1, 1, 2, 3, 5, 8, 13, 21, 55, 89 }; 9 vector... 阅读全文
posted @ 2016-01-24 18:01 zhangbaochong 阅读(617) 评论(0) 推荐(0) 编辑
摘要: 二叉树的基本操作: 包括创建二叉树,遍历二叉树(先序、中序和后序),求二叉树深度,求二叉树结点数,求叶子结点数。其中创建二叉树是先序创建的,即输入的时候要按二叉树先序输入。废话不说直接看代码 1 #include 2 using namespace std; 3 4 struct BiT... 阅读全文
posted @ 2016-01-24 11:26 zhangbaochong 阅读(698) 评论(0) 推荐(0) 编辑
摘要: 题目:Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical... 阅读全文
posted @ 2016-01-23 22:27 zhangbaochong 阅读(172) 评论(0) 推荐(0) 编辑
摘要: 题目:Invert a binary tree. 4 / \ 2 7 / \ / \1 3 6 9to 4 / \ 7 2 / \ / \9 6 3 1反转二叉树,左右儿子值交换代码:/*** Definition for ... 阅读全文
posted @ 2016-01-23 22:18 zhangbaochong 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 我们把上一个教程的代码封装到一个类中来方便以后的使用。首先新建一个空工程叫做MyHelloWin,添加一个main.cpp文件,然后新建一个类叫做MyWindow,将于窗体有关的操作封装到里面MyWindow.h文件 1 /**************************************... 阅读全文
posted @ 2016-01-22 23:39 zhangbaochong 阅读(2652) 评论(0) 推荐(0) 编辑
摘要: 题目:Given a linked list, swap every two adjacent nodes and return its head.For example,Given1->2->3->4, you should return the list as2->1->4->3.Your al... 阅读全文
posted @ 2016-01-22 19:22 zhangbaochong 阅读(259) 评论(0) 推荐(0) 编辑
摘要: 原理很简单,直接上代码吧(Leetcode 21)/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val... 阅读全文
posted @ 2016-01-22 18:49 zhangbaochong 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 题目:Given a linked list, determine if it has a cycle in it. 判断一个链表是否有环代码: /** * Definition for singly-linked list. * struct ListNode { * int val;... 阅读全文
posted @ 2016-01-22 17:59 zhangbaochong 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 思路:如果开始有两个指针指向头结点,一个走的快,一个走的慢,如果有环的话,最终经过若干步,快的指针总会超过慢的指针一圈从而相遇。 如何计算环的长度呢?可以第一次相遇时开始计数,第二次相遇时停止计数。 如何判断环的入口点?碰撞点p到连接点的距离=头指针到连接点的距离,因此,分别从碰撞点、头指针开始... 阅读全文
posted @ 2016-01-22 17:57 zhangbaochong 阅读(6518) 评论(0) 推荐(0) 编辑
摘要: 题目:Given a singly linked list, group all odd nodes together followed by the even nodes. Please note here we are talking about the node number and not ... 阅读全文
posted @ 2016-01-21 22:08 zhangbaochong 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 假设单链表数据结构定义如下: struct ListNode { int val; ListNode *next; ListNode(int x) : val(x), next(NULL) {} };单链表有一个头指针指向第一个结点,最后一个结点指向NULL一、最容... 阅读全文
posted @ 2016-01-21 21:39 zhangbaochong 阅读(9230) 评论(0) 推荐(1) 编辑
摘要: 原文链接:http://www.cnblogs.com/python27/archive/2011/12/09/2282486.html开篇前言:为什么写这篇文章?笔者目前在学习各种各样的算法,在这个过程中,频繁地碰到到递归思想和分治思想,惊讶于这两种的思想的伟大与奇妙的同时,经常要面对的一个问题就... 阅读全文
posted @ 2016-01-20 21:37 zhangbaochong 阅读(2606) 评论(0) 推荐(0) 编辑