摘要:
剑指OFFER 平衡二叉树 分析 先理解什么是平衡二叉树 它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。 下面的代码我只判断了根节点左右孩子的深度(没有再递归判断其子树的),但是也一样过了. 代码 阅读全文
摘要:
剑指OFFER 二叉搜索树的第k个结点 分析 先中序遍历一遍,保存下结果,然后取第k小个结点即可 代码 阅读全文
摘要:
剑指OFFER 二叉搜索树与双向链表 题目描述 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。 分析 先按中序遍历一次,然后根据中序遍历的顺序来组织双向链表 代码 阅读全文
摘要:
剑指OFFER 数据流中的中位数 题目描述 如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法 阅读全文
摘要:
剑指OFFER 不用加减乘除做加法 分析 根据汇编加法思想,把加法分为两部分,一部分是进位部分,一部分是异或部分,不断循环得出结果 代码 阅读全文
摘要:
剑指OFFER 扑克牌顺子 分析 把数与数之间的缝隙用0去填,如果0够用那么就是顺子;如果0用完了仍然填不完缝隙,那么就组不成顺子 代码 阅读全文
摘要:
剑指OFFER 复杂链表的复制 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 分析 设A为被复制的链表,B为复制成功的链 阅读全文
摘要:
剑指OFFER 树的子结构 题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 分析 先遍历A树,如果A树某个节点与B树的根节点相同,那么以这两个结点出发,看是否是是子结构. 判断子结构需要以这两个结点出发进行同步遍历 代码 阅读全文