摘要:        
2014-03-19 03:40题目:给定一棵二叉树,把每一层的节点串成一个链表,最终返回一个链表数组。解法:前序遍历,遍历的同时向各个链表里添加节点。水平遍历好像还不如前序遍历来得方便。代码: 1 // 4.4 Level order traversal 2 #include 3 #include 4 using namespace std; 5 6 struct TreeNode { 7 int val; 8 TreeNode *left; 9 TreeNode *right; 10 11 TreeNode(int _val...    阅读全文
        
            posted @ 2014-03-19 03:43
zhuli19901106
阅读(257)
评论(0)
推荐(0)
        
            
        
        
摘要:        
2014-03-19 03:34题目:给定一个排好序的数组,设计算法将其转换为一棵二叉搜索树,要求树的高度最小。解法:递归生成平衡二叉树,使左右子树的节点数尽量相等,所以对半开最好了。其实也可以生成一棵完全二叉树,不过写法应该不是很方便。代码: 1 // 4.3 Convert sorted unique array to height-balanced binary search tree. 2 #include 3 using namespace std; 4 5 struct TreeNode { 6 int val; 7 TreeNode *left; 8 ...    阅读全文
        
            posted @ 2014-03-19 03:40
zhuli19901106
阅读(262)
评论(0)
推荐(0)
        
            
        
        
摘要:        
2014-03-19 03:32题目:给定一个有向图,判断其中两点是否联通。解法:DFS搜索解决,如果是无向图的话,就可以用并查集高效解决问题了。代码: 1 // 4.2 Write a program to check if there exists a path between two nodes in a directed graph. 2 #include 3 #include 4 #include 5 #include 6 #include 7 using namespace std; 8 9 struct GraphNode { 10 int...    阅读全文
        
            posted @ 2014-03-19 03:34
zhuli19901106
阅读(292)
评论(0)
推荐(0)
        
            
        
        
摘要:        
2014-03-19 03:30题目:判断一个二叉树是否为平衡二叉树,即左右子树高度相差不超过1。解法:递归算高度并判断即可。代码: 1 // 4.1 Implement an algorithm to check if a bianry tree is height-balanced. 2 #include 3 #include 4 #include 5 using namespace std; 6 7 struct TreeNode { 8 int val; 9 TreeNode *left;10 TreeNode *right;11 12 ...    阅读全文
        
            posted @ 2014-03-19 03:32
zhuli19901106
阅读(323)
评论(0)
推荐(0)
        
            
        
        
摘要:        
2014-03-19 03:20题目:实现一个包含阿猫阿狗的先入先出队列,我要猫就给我一只来的最早的猫,要狗就给我一只来的最早的狗,随便要就给我一只来的最早的宠物。建议用链表实现。解法:单链表可以实现一个简单的队列,这种有不同种类数据的队列,可以用if语句选择,也可以用一个堆做时间上的优化。对于来的时间,我用一个64位整数表示时间戳,在地球被太阳吃掉以前,这个数字是不大可能上溢的,所以问题应该不大。代码: 1 // 3.7 Implement a queue that holds cats and dogs. If you want dog or cat, you get the oldes.    阅读全文
        
            posted @ 2014-03-19 03:28
zhuli19901106
阅读(261)
评论(0)
推荐(0)
        
            
        
        
摘要:        
2014-03-19 03:01题目:给定一个栈,设计一个算法,在只使用栈操作的情况下将其排序。你可以额外用一个栈。排序完成后,最大元素在栈顶。解法:我在草稿纸上试了试{1,4,2,3}之类的小例子,大概两三分钟有了思路。既然比较性排序是基于比较和交换的,那么就在两个栈的栈顶进行比较,同时在栈顶进行交换,此处需要O(1)的空间来进行交换。具体实现请看代码,时间复杂度为O(n^2)。代码: 1 // 3.6 Try to sort the elements in a stack with the aid of at most one more stack. 2 #include 3 #incl.    阅读全文
        
            posted @ 2014-03-19 03:20
zhuli19901106
阅读(321)
评论(0)
推荐(0)
        
    
                    
                

浙公网安备 33010602011771号