递归
崔雨田
这个作者很懒,什么都没留下…
展开
-
剑指 offer(栈的压入、弹出序列)、栈
题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的) 模拟题 Code import java.util.ArrayList; import java.util.Stack; public class Solution { public boolean原创 2020-05-31 23:24:33 · 64 阅读 · 0 评论 -
剑指 offer(对称二叉树)、二叉树、递归
题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。 思路 直接根据该二叉树是否镜像即可判断 Code /* public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } */ publ原创 2020-05-30 21:16:44 · 71 阅读 · 0 评论 -
剑指 offer( 二叉树的镜像)、二叉树、递归
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 思路 使用递归, 遇到二叉树就直接交换左右子树 Code /** public class TreeNode { int val = 0; TreeNode left = null;原创 2020-05-30 21:13:48 · 63 阅读 · 0 评论 -
剑指 offer(从上往下打印二叉树)、二叉树、递归
题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印。 思路 1、二叉树的层序遍历 2、BFS 队列层序访问 Code import java.util.ArrayList; import java.util.LinkedList; import java.util.Queue; /** public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; publi原创 2020-05-30 21:11:03 · 142 阅读 · 0 评论 -
剑指 offer(二叉搜索树的后序遍历序列)、二叉搜索树、递归
题目描述 给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。 概念 1、二叉搜索树 一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。 2、特点 中序遍历就是其节点的排序 思路: 二叉搜索树的中序遍历结果就是该树所有节点的升序排列 Code原创 2020-05-30 21:07:09 · 91 阅读 · 0 评论 -
剑指 offer(二叉搜索树的后序遍历序列)、二叉树、递归
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 概念 1、二叉搜索树 一棵空树,或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值; (3)左、右子树也分别为二叉排序树; (4)没有键值相等的结点。 2、特点 中序遍历就是其节点的排序 思路 BST的后序序列的合法序列是,对于一个序列S,最后一个元素原创 2020-05-30 21:01:58 · 86 阅读 · 0 评论 -
Java 递归、DFS、回溯
DFS/回溯算法 如果某问题的解可以由多个步骤得到,而每个步骤都有若干种选择(这些候选方案集可能会依赖之前做出的选择),且可以用递归枚举法实现,则它的工作方式可以用解答树来描述。 全排列问题 输出数字1~N所能组成的所有全排列 public class A { /** * 全排列 * * @param args */ static Vector<Integer> vector = new Vector<>(); s原创 2020-05-29 23:59:16 · 1330 阅读 · 0 评论 -
Java 递归、二叉树
二叉树的几种遍历方法 1、先序 /** * 先序遍历 * 1 2 4 7 3 5 6 8 * * @param node */ static void preVis(Node node) { if (node == null) return; System.out.println(node.val); preVis(node.left); preVis(node.right);原创 2020-05-29 23:54:43 · 141 阅读 · 0 评论 -
Java 初探 递归
递归原理 函数调用栈实例:主函数 main() 调用 funcA() , funcA() 调用 funcB() , funcB() 再自我调用(递 归) 函数调用栈的基本单位是帧(frame)。每次函数调用时,都会相应地创建一帧, 记录该函数实例在二 进制程序中的返回地址(return address),以及局部变量、传入参数等, 并将该帧压入调用栈。若在 该函数返回之前又发生新的调用,则同样地要将与新函数对应的一帧压入栈中,成为新的栈顶。函数一 旦运行完毕,对应的帧随即弹出,运行控制权将被交还给该函 数原创 2020-05-29 23:46:46 · 93 阅读 · 0 评论