题目描述:给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下:

  • 二叉树的根是数组 nums 中的最大元素。
  • 左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。
  • 右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。

返回有给定数组 nums 构建的 最大二叉树 。

阅读全文 »

题目描述:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:

1
2
3
4
5
6
class Node {
int val;
Node left;
Node right;
Node next;
}

填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空间不算做额外的空间复杂度。

阅读全文 »

题目描述:给你二叉树的根结点 root ,请你将它展开为一个单链表:

  • 展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。
  • 展开后的单链表应该与二叉树 先序遍历 顺序相同。
阅读全文 »

题目描述:请判断一个链表是否为回文链表。你能否用 O(n) 时间复杂度和 O(1) 空间复杂度解决此题?

阅读全文 »

题目描述:给你一个链表,每 k 个节点一组进行翻转,请你返回翻转后的链表。k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍,那么请将最后剩余的节点保持原有顺序。你可以设计一个只使用常数额外空间的算法来解决此问题吗?你不能只是单纯的改变节点内部的值,而是需要实际进行节点交换。

阅读全文 »

反转单链表的前n个元素与反转单链表是类似的问题,同理其也会有三种方法去解决。可以增加一个栈来解决,这样相当于只对前n个元素进行压栈处理,同理也可以用遍历的方法解决,由于能用栈解决同样也就可以使用递归的方式解决。

阅读全文 »

hexo博客搭建好之后,如何调整样式对于没有前端基础的人来说是一件很困难的事情,下面分享我样式调整过程中的一些经验,由于我使用的是Next主题,所以如果是其它的主题的仅做参考,有可能细节之处不太一样。

阅读全文 »

单链表的反转,我们能想到反转顺序最简单的数据结构就是栈了,如果可以用栈的话,那问题就简单了。顺序遍历单链表,依次入栈直到遍历结束,然后依次出栈重新有前到后连接为一个新的单链表,则自动实现了反转功能。

阅读全文 »

题目描述:给你单链表的头指针 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。

阅读全文 »