摘要:
题目描述 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 解题思路 还是用层序遍历的思想,设置一个队列初始推入根节点,每次删除队列顶的节点时,打印出来结点值,若其有左右子节点,则将左右子节点依次推入队列,如此遍历直到队列为空。 由于本题要求逐行输出,所以需要设置两个变量来保持分行: 阅读全文
摘要:
题目描述 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数。 解题思 阅读全文
摘要:
题目描述 输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。 解题思路 借鉴快速排序中分治的思想,首先调用Partition函数找到分治点下标m,若m与k相等,则位于m之前的m个数即为解;若m小于k,则继续在m右边找分治点;若m大 阅读全文
摘要:
题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快 阅读全文
摘要:
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树。 解题思路 考虑用后序遍历的思想,再遍历过程中分别记录左右子树的高度,若左右子树均为平衡二叉树,则继续比较左右子树的高度差并记录此时的树高,若不大于1则返回true,否则返回false。 代码 1 class Solution { 2 publ 阅读全文
摘要:
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 解题思路 考虑构造HasSubTree函数前序遍历树A递归判断子结构。从树A的根节点开始每遍历到一个节点,判断其结点值是否与树B的根节点值相等,若相等则调用IsSub函数判断A的此子树是否包含树B。 阅读全文
摘要:
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 解题思路 运用递归的思想,首先根据前序遍历的第一个结 阅读全文
摘要:
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。 解题思路 首先想到可用 阅读全文
摘要:
题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。 输入描述: 输入一个字符串,长度不超过9(可能有字符重复),字符只包括大小写字母。 输入一个字符串,按字典序打印出 阅读全文
摘要:
题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 解题思路 问题是将二叉搜索树转换成一个排序的双向链表,考虑到二叉搜索树的中序遍历序列为排序序列,所以可用中序遍历的递归做法来调整指针。在遍历过程中,调整指针pLast使其指向 阅读全文