摘要: 问题: 如标题 分析: 非递归前序遍历和后序遍历一样,唯一不同的两个点是: 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)
摘要: 问题: 给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。 来源:力扣(LeetCode 阅读全文
posted @ 2019-10-14 13:50 高鸣泽 阅读(194) 评论(0) 推荐(0)
摘要: 问题: 判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。 示例 1: 输入: 121输出: true示例 2: 输入: -121输出: false解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。示例 3: 输入: 1 阅读全文
posted @ 2019-10-14 13:41 高鸣泽 阅读(84) 评论(0) 推荐(0)
摘要: 问题: 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。 示例: 来源:力扣(LeetCode)链接:https://leetcode-cn.c 阅读全文
posted @ 2019-10-14 13:34 高鸣泽 阅读(94) 评论(0) 推荐(0)