摘要: 问题: 如标题 分析: 非递归前序遍历和后序遍历一样,唯一不同的两个点是: 1.后序遍历需要头插,所以只能用链表(linkedlist) 2.左右节点判断是否为空的顺序颠倒。 除了以上两点以外其他代码完全相同。 代码: /** * Definition for a binary tree node. 阅读全文
posted @ 2019-10-15 13:46 高鸣泽 阅读(106) 评论(0) 推荐(0)
摘要: 问题: 后序遍历二叉树 分析:非递归后序遍历二叉树。直接后序遍历的话会很麻烦,所以我们要想一些精妙的方法,将后序遍历改成先序遍历并满足以下两个条件即可。 1.使用链表头插法来进行先序遍历。 2.先遍历右子树再遍历左子树即可(借助栈实现,先将左节点压栈,再将右节点压栈)。 代码: /** * Defi 阅读全文
posted @ 2019-10-15 13:33 高鸣泽 阅读(112) 评论(0) 推荐(0)
摘要: 问题: 中序遍历二叉树 分析: 1.递归解法 2.栈+循环 嵌套循环 内层循环一直判断当前节点有没有左节点,有就入栈,当前节点等于左节点,没有的话,就出栈打印,当前节点再等于右节点,然后回到开始进行循环判断右节点的左节点是不是空。 代码: import java.util.ArrayList;imp 阅读全文
posted @ 2019-10-15 11:24 高鸣泽 阅读(131) 评论(0) 推荐(0)
摘要: 问题: 编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。 你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。 示例 1: 输入:["h","e 阅读全文
posted @ 2019-10-15 09:20 高鸣泽 阅读(94) 评论(0) 推荐(0)
摘要: 问题: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head = [4,5,1,9],它可以表示为: 示例 1: 输入: head = [4,5,1,9], node = 5输出: [4,1,9]解释: 给定你链表中值为 5 的第二 阅读全文
posted @ 2019-10-15 09:09 高鸣泽 阅读(141) 评论(0) 推荐(0)