From 31a7d2ecfc1f0d3d1dc3cf751288ba5a00d2b0bb Mon Sep 17 00:00:00 2001 From: YuCheng Hu Date: Wed, 8 Nov 2023 21:09:43 -0500 Subject: [PATCH] Update the code for java --- algorithm/_sidebar.md | 4 +- algorithm/a-word-wrap-functionality.md | 2 +- algorithm/binary-tree.md | 80 ++++++++++++++++++++++++++ algorithm/lambda-evens-lambda.md | 27 +++++++++ 4 files changed, 111 insertions(+), 2 deletions(-) create mode 100644 algorithm/binary-tree.md create mode 100644 algorithm/lambda-evens-lambda.md diff --git a/algorithm/_sidebar.md b/algorithm/_sidebar.md index 05b0223..4f47f9d 100644 --- a/algorithm/_sidebar.md +++ b/algorithm/_sidebar.md @@ -1,4 +1,6 @@ +- [二叉树](/algorithm/binary-tree.md) - [下一个斐波拉契数](/algorithm/next-fibonacci-number.md) - [一个字符串包裹函数](/algorithm/a-word-wrap-functionality.md) - [打印 100 以内的素数](/algorithm/prime-numbers-from-1-to-100.md) -- [二进制空白](/algorithm/binary-gap.md) \ No newline at end of file +- [二进制空白](/algorithm/binary-gap.md) +- [Lambda 偶数](/algorithm/binary-gap.md) \ No newline at end of file diff --git a/algorithm/a-word-wrap-functionality.md b/algorithm/a-word-wrap-functionality.md index ddff5bd..877b22e 100644 --- a/algorithm/a-word-wrap-functionality.md +++ b/algorithm/a-word-wrap-functionality.md @@ -1,7 +1,7 @@ # A "word-wrap" functionality(一个字符串包裹函数) > 🔔 参与讨论:https://www.isharkfly.com/t/a-word-wrap-functionality/13452 -> + ## 问题描述 diff --git a/algorithm/binary-tree.md b/algorithm/binary-tree.md new file mode 100644 index 0000000..d7839a3 --- /dev/null +++ b/algorithm/binary-tree.md @@ -0,0 +1,80 @@ +# 二叉树(Binary Tree) + +> 🔔 参与讨论:https://www.isharkfly.com/t/binary-tree/15117 + +二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的。对于二叉树,有深度遍历和广度遍历,深度遍历有前序、中序以及后序三种遍历方法,广度遍历即我们平常所说的层次遍历。 + +因为树的定义本身就是递归定义,因此采用递归的方法去实现树的三种遍历不仅容易理解而且代码很简洁,而对于广度遍历来说,需要其他数据结构的支撑,比如队列。 + +## 遍历 + +二叉树的遍历你可能会在各种面试和算法题目中遇到。 + +这里主要讨论下面几种种遍历算法。在遍历 深度遍历算法(depth-first search,缩写为 DFS)和 广度遍历算法(breadth-first search, +简称 BFS) + +![](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/optimized/2X/1/161b298a34e240715891424bdd3c309caff9fc27_2_690x287.png) + +相对来说,深度遍历算法一般都可以在程序中使用递归来实现。 + +广度遍历算法一般都需要解借助一个其他的存储结构,一般来说会考虑使用队列来实现。 + +遍历的逻辑按照上面的说明的方法,使用下面 4 种遍历的方法。 + +(DFS)前序遍历:根结点 ---> 左子树 ---> 右子树 + +(DFS)中序遍历:左子树---> 根结点 ---> 右子树 + +(DFS)后序遍历:左子树 ---> 右子树 ---> 根结点 + +(BFS)层次遍历:只需按层次遍历即可 + +![Binary Tree|315x382](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/original/2X/5/5ae8b78a4854a5134f60cb6e9e855dc19a1ef114.png) + +上面这个树的按照各种不同的遍历方法的遍历结果为: + +前序遍历:1 2 4 5 7 8 3 6 + +中序遍历:4 2 7 5 8 1 3 6 + +后序遍历:4 7 8 5 2 6 3 1 + +层次遍历:1 2 3 4 5 6 7 8 + +针对上面的提出的各种遍历方法,我们对程序中使用的遍历代码进行分析。 + +首先需要将上面的数据结构初始化为数组。可以将上面的树初始化为数组:[1,2,3,4,5,#,6,#,#,7,8,#,#],这个数字中的 # 符号表示的为 +NULL,就是没有子节点的意思。 + +### 前序遍历 + +递归方法,我们可以很容易的使用前序的递归来对树进行遍历。 + +``` +/** + * + * @param root + */ +public void preOrderTraverselRecursion(TreeNode root) { + if (root != null) { + loopList.add(root.val); + preOrderTraverselRecursion(root.left); + preOrderTraverselRecursion(root.right); + } +} +``` + +中序遍历 + +``` +/** + * + * @param root + */ +public void preOrderTraverselRecursion(TreeNode root) { + if (root != null) { + preOrderTraverselRecursion(root.left); + loopList.add(root.val); + preOrderTraverselRecursion(root.right); + } +``` \ No newline at end of file diff --git a/algorithm/lambda-evens-lambda.md b/algorithm/lambda-evens-lambda.md new file mode 100644 index 0000000..27e1bcf --- /dev/null +++ b/algorithm/lambda-evens-lambda.md @@ -0,0 +1,27 @@ +# Lambda Evens(Lambda 偶数) + +> 🔔 参与讨论:https://www.isharkfly.com/t/lambda-evens-lambda/317 + +## 英文题目 + +题目的英文表述成参考: + +![lambda-evens|690x337](https://cdn.isharkfly.com/com-isharkfly-www/discourse-uploads/optimized/2X/7/7cd0f6ebda4cef2d5ac1342d6cdce236777689d7_2_690x337.png) + +## 中文描述 + +题目要求比较简单,使用 Lambda 表达式写一个函数,找到给出字符串中的偶数。 + +## 思路点评 + +你需要对 Lambda 表达式比较熟悉,需要知道 Lambda 是什么。在 Java 世界中,Lambda 是在 Java 8 中引进的一个表达式。属于函数式。 + +近来也用得越来越多,最好对 Lambda 有所了解。 + +同时,你还要有基本的Java 字符拆分 API 的了解。很多题目可能不能允许你用第三方 API,所以你需要了解 String.split 有关的算法。 + +## 源代码 + +源代码和有关代码的更新请访问 GitHub: + +https://github.com/cwiki-us/codebank-algorithm/blob/master/src/test/java/com/ossez/codebank/interview/tests/others/LambdaEvensTest.java \ No newline at end of file