- 博客(14)
- 收藏
- 关注
原创 力扣-235-二叉搜索树的最近公共祖先-javaScript实现
对于本题主要要利用二叉搜索树的特性来求解就很简单很多,因为他帮我们确定了遍历的方向。
2023-07-21 18:25:23 87 1
原创 力扣-530-二叉搜索树的最小绝对差-JavaScript实现
节点在移动的过程中,一定要及时更新前一个节点,使其保证跟当前节点是相邻的。还有就是采用中序遍历方法,这其中其实隐含了回溯的过程。
2023-07-18 10:23:01 68 1
原创 力扣-700-二叉搜索树中的搜索-JavaScript实现
这道题代码和思路之所以这么简洁和容易理解,主要是这道题目利用了二叉搜索树的特性触发,根本不用遍历全部二叉树的节点,直接根据他的特性来缩小范围,就很类似于二分查找。
2023-07-15 11:03:29 67 1
原创 力扣-617-合并二叉树-javaScript实现
本题主要是一起操作两个二叉树 其实和之前写过的那个对称二叉树差不多,只不过对称二叉树是操作根节点的左右子树 也是操作两颗树 而这道题就很直接指出来操作的是 两颗独立的二叉树 遍历的时候 是两颗树一起遍历的。刚开始会有点懵 但是仔细想想 不还就是递归嘛 确定递归的三要素即可。
2023-07-14 18:07:48 92
原创 力扣-654.最大二叉树-javaScript实现
力扣题目链接 这道题显然也是构造二叉树的题目 一般构造二叉树的题目都是按照前序遍历来算的 因为前序遍历(中左右) 要先构造出根节点才能继续根据根节点往下构造其左右子树。
2023-07-12 19:34:55 36 1
原创 力扣-106-. 从中序与后序遍历序列构造二叉树-JavaScript实现
对于本道题可以分为以下几个步骤: 1.后序数组为0 为空节点 2.后序数组中的最后一个元素为根节点 3.在中序数组中以根节点为分界线 切割左右子树 4.切中序数组 5.切后序数组 6.递归处理左区间右区间 中序:左中右 inorder 后序: 左右中 postorder 后序遍历的最后一个节点是整个二叉树的根节点,可以根据这一条来找到root节点,然后用root节点去中序遍历中 将其分为左右子树,依据递归,进行后续的二叉树子树继续分解,知道没有节点为止。
2023-07-10 19:43:37 26 1
原创 力扣-112-路径求和-javaScript实现
总结:递归法的话 要主要在进行左右遍历的时候 会有回溯的过程 回溯的过程其实就是为了返回到二叉树的上一层节点 方便进行右子树的遍历,还有就是对于递归函数的第二个参数,是利用目标值来减去所遍历的每一个节点的值。不用来另外定义一个变量去求和 最后再进行比较 这也是一种解题的思路。对于层序遍历的话 要注意的是这里要进行求和比较 在定义这个求和接收的参数的时候 要注意用一个数组来接收,方便进行下一层节点的遍历的时候 可以获得一个已经把前面节点已经求和的值。
2023-07-10 19:29:45 34 1
原创 力扣-513-找树左下角的值-javaScript实现
总结:首先就是要理解好题意。题目要求的是找到二叉树左下角的值 也就是二叉树最后一层最左侧的节点的值 这个最左侧的不一定是左子树。还有就是在递归的时候 用到的回溯 也是值得注意的点。
2023-07-07 13:20:04 39 1
原创 力扣-404-左叶子之和-javaScript实现
左叶子之和 毋庸置疑 首先得是一个叶子节点(即这个节点的左右孩子节点都是空的) 其次就是该节点是是父亲节点的左孩子 所以这里的话 我们就要从父亲节点入手。
2023-07-06 17:42:54 38 1
原创 力扣-257-儿二叉树的所有路径-javaScript实现
这样才方便让父节点指向孩子节点,找到对应的路径。这道题主要用到的是递归和回溯 这两者是相辅相成的。具体的注释都写在代码中了。
2023-07-05 18:09:09 32 1
原创 力扣-110-平衡二叉树-javaScript实现
利用递归来求解这道题会相对简便一点 求得是平衡二叉树(不了解的话 可以去看看二叉树的理论基础) 所以每个节点的左右孩子的高度差必须小于等于1。这里要区别二叉树的高度和深度。到该节点的最长简单路径边的条数。的最长简单路径边的条数。
2023-07-04 18:33:44 34 1
原创 力扣-222-完全二叉树的节点个数-javaScript实现
利用完全二叉树的特性来求解(对完全二叉树不理解的话 可以看一下前面的那个二叉树的理论基础) 也就是找满二叉树 如果整个大树不是满二叉树的话 就往子树去寻找。如果找到满二叉树的话就不用去按个遍历节点 直接利用公式 2的n次方-1 这里的n指的是二叉树的深度 所以在这之前要去确定二叉树的深度。这里利用的是递归来求解 判断是否为二叉树 就要求 左右子树的深度是一样的。这道题利用后序遍历会容易些 为什么呐?因为他需要收集左右孩子的节点并且返回给中间的节点。可以直接在力扣上编译运行的代码。
2023-07-03 17:46:44 46 1
原创 Day1-力扣226.js实现翻转二叉树
到力扣链接//递归法 前序遍历 后序遍历 从而实现二叉树的反转操作//迭代法 利用栈这种数据结构来实现迭代 栈的底层其实也是递归//层序遍历法 利用二叉树的层序遍历方法来实现
2023-06-24 11:53:21 106 1
原创 二叉树的理论基础
深度优先遍历一般我们都是使用递归法来解决的,其实栈这种数据结构底层就是用递归来实现的(先进后出),所以说每次每一次出栈都要等到上面的元素都出去了当前元素才能出去,就像递归必须等到里面的函数执行完并且返回数值的时候,当前的函数才能继续往下执行。深度优先搜素一般是使用队列来实现的,利用队列先进先出的特性来实现一层一层的遍历。上面我们也说了二叉树主要有两种存储方式:链式存储和顺序存储。顺序存储就是⽤数组来存, 这个定义没啥可说的。下面我们就来看看链式存储的二叉树节点定义的方式:int val;
2023-06-23 11:59:54 90 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人