二叉树
文章平均质量分 54
二叉树
可惜我是水瓶座__
这个作者很懒,什么都没留下…
展开
-
【LeetCode】将有序数组转换为二叉搜索树
因为数组严格递增,所以每次将中点拿出来,变成一个节点,然后再递归的往左右两边探寻。给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵。解释:[1,null,3] 和 [3,1] 都是高度平衡二叉搜索树。输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]nums 按 严格递增 顺序排列。输入:nums = [1,3]原创 2024-08-08 21:43:28 · 405 阅读 · 0 评论 -
【LeetCode】二叉树的锯齿形层序遍历
给你二叉树的根节点 root ,返回其节点值的 锯齿形层序遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。简单的一个思路就是普通的层序遍历,放到答案数组中,最后在对数组中的元素,隔一个进行一次反转就好了。输入:root = [3,9,20,null,null,15,7]输出:[[3],[20,9],[15,7]]树中节点数目在范围 [0, 2000] 内。输入:root = [1]输入:root = []原创 2024-07-29 23:34:26 · 191 阅读 · 1 评论 -
【LeetCode】路径总和
判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum。输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22。输入:root = [1,2,3], targetSum = 5。解释:由于树是空的,所以不存在根节点到叶子节点的路径。不存在 sum = 5 的根节点到叶子节点的路径。解释:等于目标和的根节点到叶节点路径如上图所示。叶子节点 是指没有子节点的节点。原创 2024-07-22 22:17:14 · 395 阅读 · 0 评论 -
【LeetCode】二叉树展开为链表
展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null。可以先画一个图,手动将展开链表操作的流程执行一下,然后就按照手动的流程,来写代码。输出:[1,null,2,null,3,null,4,null,5,null,6]进阶:你可以使用原地算法(O(1) 额外空间)展开这棵树吗?输入:root = [1,2,5,3,4,null,6]树中结点数在范围 [0, 2000] 内。输入:root = [0]输入:root = []原创 2024-07-22 21:29:08 · 212 阅读 · 0 评论 -
【LeetCode】填充每个节点的下一个右侧节点指针 II
解释:给定二叉树如图 A 所示,你的函数应该填充它的每个 next 指针,以指向其下一个右侧节点,如图 B 所示。序列化输出按层序遍历顺序(由 next 指针连接),‘#’ 表示每层的末尾。填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。使用递归解题也符合要求,本题中递归程序的隐式栈空间不计入额外空间复杂度。输入:root = [1,2,3,4,5,null,7]输出:[1,#,2,3,#,4,5,7,#]原创 2024-07-21 21:33:20 · 429 阅读 · 0 评论 -
【LeetCode】从中序与后序遍历序列构造二叉树
给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树。输入:inorder = [9,3,15,20,7], postorder = [9,15,7,20,3]输入:inorder = [-1], postorder = [-1]简单的做法,和【前序+中序 构造二叉树】一样,对数组进行分割就好了。输出:[3,9,20,null,null,15,7]后序序列:9 15 7 20 3。原创 2024-07-21 21:17:02 · 1239 阅读 · 1 评论 -
【LeetCode】从前序与中序遍历序列构造二叉树
给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树并返回其根节点。输入: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]输入: preorder = [-1], inorder = [-1]输出: [3,9,20,null,null,15,7]preorder 和 inorder 均 无重复 元素。inorder 均出现在 preorder。原创 2024-07-21 19:42:12 · 386 阅读 · 0 评论 -
【LeetCode】对称二叉树
输入:root = [1,2,2,null,3,null,3]给你一个二叉树的根节点 root , 检查它是否轴对称。输入:root = [1,2,2,3,4,4,3]进阶:你可以运用递归和迭代两种方法解决这个问题吗?使用递归,往下对称着看就好了,反正节点传到函数。树中节点数目在范围 [1, 1000] 内。里面,又不用管它俩到底相距的有多远,。原创 2024-07-21 19:27:47 · 451 阅读 · 0 评论 -
【LeetCode】翻转二叉树
给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。输入:root = [4,2,7,1,3,6,9],所以要写到一个自定义函数里,最后将结果返回。树中节点数目范围在 [0, 100] 内。输出:[4,7,2,9,6,3,1]输入:root = [2,1,3]就正常交换,但注意题目要求返回。输入:root = []输出:[2,3,1]原创 2024-07-20 23:01:56 · 273 阅读 · 0 评论 -
【LeetCode】相同的树
给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。同时遍历二叉树就好了,聚焦于当前两节点,后续的交给下一个栈来做。输入:p = [1,2], q = [1,null,2]输入:p = [1,2,3], q = [1,2,3]输入:p = [1,2,1], q = [1,1,2]两棵树上的节点数目都在范围 [0, 100] 内。原创 2024-07-20 22:53:53 · 228 阅读 · 0 评论 -
【LeetCode】二叉树的最大深度
二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。输入:root = [3,9,20,null,null,15,7]给定一个二叉树 root ,返回其最大深度。树中节点的数量在 [0, 104] 区间内。输入:root = [1,null,2]递归就好了,当前如果是空,就返回。,否则返回左右子树最大深度。原创 2024-07-20 22:40:13 · 500 阅读 · 1 评论