摘要: 给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。 例如:给定二叉树 [3,9,20,null,null,15,7], 返回锯齿形层次遍历如下: 其实就是用两个栈,存储的时候用一个栈,遍历的时候倒进另一个栈。 当时的写法我真是佩服 阅读全文
posted @ 2018-07-16 18:54 onlyandonly 阅读(1249) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,返回它的中序 遍历。 示例: 进阶: 递归算法很简单,你可以通过迭代算法完成吗? 递归是真的简单。迭代的话用栈就可以了,我做的时候主要的问题是怎么才能保证循环的时候不再访问到之前的节点,因为头疼想了很久。。。其实只要每次加一个指针就好了。。这个指针不为空就入栈,然后指向节点的左子树, 阅读全文
posted @ 2018-07-16 16:32 onlyandonly 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 编写一个程序,找到两个单链表相交的起始节点。 例如,下面的两个链表: 在节点 c1 开始相交。 注意: 如果两个链表没有交点,返回 null. 在返回结果后,两个链表仍须保持原有的结构。 可假定整个链表结构中没有循环。 程序尽量满足 O(n) 时间复杂度,且仅用 O(1) 内存。 又是一个简化时间复 阅读全文
posted @ 2018-07-16 15:01 onlyandonly 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 给定一个单链表,把所有的奇数节点和偶数节点分别排在一起。请注意,这里的奇数节点和偶数节点指的是节点编号的奇偶性,而不是节点的值的奇偶性。 请尝试使用原地算法完成。你的算法的空间复杂度应为 O(1),时间复杂度应为 O(nodes),nodes 为节点总数。 示例 1: 示例 2: 说明: 应当保持奇 阅读全文
posted @ 2018-07-16 14:35 onlyandonly 阅读(173) 评论(0) 推荐(0) 编辑
摘要: 给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例: 非常简单的链表合并,注意一下最后的进位也要加进去。 这题主要是代码优化,按照我以前看的那本数据结构书,我要写3个wh 阅读全文
posted @ 2018-07-16 10:39 onlyandonly 阅读(144) 评论(0) 推荐(0) 编辑