二叉树
文章平均质量分 63
追梦偏执狂
在疯狂与不疯狂之间游荡,就很nice
展开
-
力扣:113. 路径总和 II
题目链接:113. 路径总和 II题目:给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum = 22输出:[[5,4,11,2],[5,8,4,5]]示例 2:输入:root = [1,2,3], targetSum = 5输出:[]示原创 2022-05-27 18:07:07 · 163 阅读 · 0 评论 -
力扣:112. 路径总和
题目链接:112. 路径总和题目:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指没有子节点的节点。示例 1:输入:root = [5,4,8,11,null,13,4,7,2,null,null,null,1], targetSum = 22输出:true解释:等于目标和的根节点到叶节点原创 2022-05-27 17:38:44 · 260 阅读 · 0 评论 -
力扣:404. 左叶子之和
题目链接:404. 左叶子之和题目:给定二叉树的根节点 root ,返回所有左叶子之和。示例 1:输入: root = [3,9,20,null,null,15,7]输出: 24解释: 在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回 24示例 2:输入: root = [1]输出: 0提示:节点数在 [1, 1000] 范围内-1000 <= Node.val <= 1000解题思路:方案一:递归递归的遍历顺序为后序遍历(左右中),是原创 2022-05-27 15:24:04 · 222 阅读 · 0 评论 -
力扣:257. 二叉树的所有路径
题目链接:257. 二叉树的所有路径题目:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]示例 2:输入:root = [1]输出:[“1”]提示:树中节点的数目在范围 [1, 100] 内-100 <= Node.val <= 100解题思路:这里有一点需要着重注原创 2022-05-27 10:12:50 · 158 阅读 · 0 评论 -
力扣:110. 平衡二叉树
题目链接:110. 平衡二叉树题目:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例 3:输入:root = []输出:true提示:树中的节点数在范围 [0, 5000] 内原创 2022-05-25 11:22:50 · 255 阅读 · 0 评论 -
力扣:222. 完全二叉树的节点个数
题目链接:222. 完全二叉树的节点个数题目:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例 2:输入:root = []输出:0示例 3:输入:root = [1]输出:1提示:原创 2022-05-24 22:08:15 · 218 阅读 · 0 评论 -
力扣:559. N 叉树的最大深度
题目链接:559. N 叉树的最大深度题目:给定一个 N 叉树,找到其最大深度。最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:3示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,nul原创 2022-05-24 20:53:30 · 125 阅读 · 0 评论 -
力扣:572. 另一棵树的子树
题目链接:572. 另一棵树的子树题目:给你两棵二叉树 root 和 subRoot 。检验 root 中是否包含和 subRoot 具有相同结构和节点值的子树。如果存在,返回 true ;否则,返回 false 。二叉树 tree 的一棵子树包括 tree 的某个节点和这个节点的所有后代节点。tree 也可以看做它自身的一棵子树。示例 1:输入:root = [3,4,5,1,2], subRoot = [4,1,2]输出:true示例 2:输入:root = [3,4,5,原创 2022-05-24 20:36:11 · 165 阅读 · 0 评论 -
力扣:100. 相同的树
题目链接:100. 相同的树题目:给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例 1:输入:p = [1,2,3], q = [1,2,3]输出:true示例 2:输入:p = [1,2], q = [1,null,2]输出:false示例 3:输入:p = [1,2,1], q = [1,1,2]输出:false提示:两棵树上的节点数目都在范围 [0, 10原创 2022-05-24 10:25:36 · 196 阅读 · 0 评论 -
力扣:101. 对称二叉树
题目链接:101. 对称二叉树题目:给你一个二叉树的根节点 root , 检查它是否轴对称。示例 1:输入:root = [1,2,2,3,4,4,3]输出:true示例 2:输入:root = [1,2,2,null,3,null,3]输出:false提示:树中节点数目在范围 [1, 1000] 内-100 <= Node.val <= 100进阶:你可以运用递归和迭代两种方法解决这个问题吗?方案一:递归用递归法之前可以先提前了解“递归三部曲原创 2022-05-24 09:37:15 · 345 阅读 · 0 评论 -
力扣:590. N 叉树的后序遍历
题目链接:590. N 叉树的后序遍历题目:给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[1,3,5,6,2,4]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,原创 2022-05-23 11:59:56 · 224 阅读 · 0 评论 -
力扣:589. N 叉树的前序遍历
题目链接:589. N 叉树的前序遍历题目:给定一个 n 叉树的根节点 root ,返回 其节点值的 前序遍历 。n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[1,3,5,6,2,4]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,原创 2022-05-23 11:31:07 · 215 阅读 · 0 评论 -
力扣:226. 翻转二叉树
题目链接:226. 翻转二叉树题目:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。示例 1:输入:root = [4,2,7,1,3,6,9]输出:[4,7,2,9,6,3,1]示例 2:输入:root = [2,1,3]输出:[2,3,1]示例 3:输入:root = []输出:[]提示:树中节点数目范围在 [0, 100] 内-100 <= Node.val <= 100解题思路:本题需要翻转二叉树,如果要从整个二原创 2022-05-23 10:35:13 · 259 阅读 · 0 评论 -
力扣:111. 二叉树的最小深度
题目链接:111. 二叉树的最小深度题目:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例 1:输入:root = [3,9,20,null,null,15,7]输出:2示例 2:输入:root = [2,null,3,null,4,null,5,null,6]输出:5提示:树中节点数的范围在 [0, 105] 内-1000 <= Node.val <= 1000思路和算原创 2022-05-21 22:32:53 · 78 阅读 · 0 评论 -
力扣:104. 二叉树的最大深度
题目链接:104. 二叉树的最大深度题目:给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7],3/ \9 20/ \15 7返回它的最大深度 3 。思路和算法:求二叉树深度可以通过计算遍历的层数来解决。代码(c++):/** * Definition for a binary tree node. * struct T原创 2022-05-21 21:52:10 · 78 阅读 · 0 评论 -
力扣:117. 填充每个节点的下一个右侧节点指针 II
题目链接:117. 填充每个节点的下一个右侧节点指针 II题目:给定一个二叉树struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。进阶:你只能使用常量级额外空间。使用递归解题也符合要求,本题中递归程序占用的栈空原创 2022-05-21 16:34:59 · 129 阅读 · 0 评论 -
力扣:116. 填充每个节点的下一个右侧节点指针
题目链接:116. 填充每个节点的下一个右侧节点指针题目:给定一个 完美二叉树 ,其所有叶子节点都在同一层,每个父节点都有两个子节点。二叉树定义如下:struct Node { int val; Node *left; Node *right; Node *next; } 填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。 初始状态下,所有 next 指针都被设置为 NULL。示例 1:原创 2022-05-21 16:19:15 · 97 阅读 · 0 评论 -
力扣:515. 在每个树行中找最大值
题目链接:515. 在每个树行中找最大值题目:给定一棵二叉树的根节点 root ,请找出该二叉树中每一层的最大值。示例1:输入: root = [1,3,2,5,3,null,9]输出: [1,3,9]示例2:输入: root = [1,2,3]输出: [1,3]提示:二叉树的节点个数的范围是 [0,104]-231 <= Node.val <= 231 - 1思路和算法:遍历每层节点,用变量记录每层最大值,然后将最大值放入结果数组。代码(c++):原创 2022-05-21 15:38:52 · 87 阅读 · 0 评论 -
力扣:429. N 叉树的层序遍历
题目链接:429. N 叉树的层序遍历题目:给定一个 N 叉树,返回其节点值的层序遍历。(即从左到右,逐层遍历)。树的序列化输入是用层序遍历,每组子节点都由 null 值分隔(参见示例)。示例 1:输入:root = [1,null,3,2,4,null,5,6]输出:[[1],[3,2,4],[5,6]]示例 2:输入:root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,nul原创 2022-05-21 15:20:59 · 110 阅读 · 0 评论 -
力扣:637. 二叉树的层平均值
题目链接:637. 二叉树的层平均值题目:给定一个非空二叉树的根节点 root , 以数组的形式返回每一层节点的平均值。与实际答案相差 10-5 以内的答案可以被接受。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[3.00000,14.50000,11.00000]解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。因此返回 [3, 14.5, 11] 。示例 2:输入:root = [3,9,2原创 2022-05-21 14:24:46 · 298 阅读 · 0 评论 -
力扣:199. 二叉树的右视图
题目链接:199. 二叉树的右视图题目:给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例 1:输入: [1,2,3,null,5,null,4]输出: [1,3,4]示例 2:输入: [1,null,3]输出: [1,3]示例 3:输入: []输出: []提示:二叉树的节点个数的范围是 [0,100]-100 <= Node.val <= 100思路和算法:本题采用队列遍历每层原创 2022-05-21 14:10:19 · 183 阅读 · 0 评论 -
力扣:107. 二叉树的层序遍历 II
题目链接:107. 二叉树的层序遍历 II题目:给你二叉树的根节点 root ,返回其节点值 自底向上的层序遍历 。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[15,7],[9,20],[3]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <=原创 2022-05-21 13:51:50 · 289 阅读 · 0 评论 -
力扣:102. 二叉树的层序遍历
题目链接:102. 二叉树的层序遍历题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。示例 1:输入:root = [3,9,20,null,null,15,7]输出:[[3],[9,20],[15,7]]示例 2:输入:root = [1]输出:[[1]]示例 3:输入:root = []输出:[]提示:树中节点数目在范围 [0, 2000] 内-1000 <= Node.val <= 100原创 2022-05-21 10:55:37 · 92 阅读 · 0 评论 -
力扣:94. 二叉树的中序遍历
题目链接:94. 二叉树的中序遍历题目:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。示例 1:输入:root = [1,null,2,3]输出:[1,3,2]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点数目在范围 [0, 100] 内-100 <= Node.val <= 100进阶: 递归算法很简单,你可以通过迭代算法完成吗?思路和算法:本题使用递归法会比原创 2022-05-20 17:58:25 · 390 阅读 · 0 评论 -
力扣:145. 二叉树的后序遍历
题目链接:145. 二叉树的后序遍历题目:给你一棵二叉树的根节点 root ,返回其节点值的 后序 遍历 。示例 1:输入:root = [1,null,2,3]输出:[3,2,1]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]提示:树中节点的数目在范围 [0, 100] 内-100 <= Node.val <= 100进阶:递归算法很简单,你可以通过迭代算法完成吗?思路和算法:本题使用递归原创 2022-05-20 17:42:01 · 347 阅读 · 0 评论 -
力扣:144. 二叉树的前序遍历
题目链接:144. 二叉树的前序遍历题目:给你二叉树的根节点 root ,返回它节点值的 前序 遍历。示例1:输入:root = [1,null,2,3]输出:[1,2,3]示例 2:输入:root = []输出:[]示例 3:输入:root = [1]输出:[1]示例 4:输入:root = [1,2]输出:[1,2]示例 5:输入:root = [1,null,2]输出:[1,2]提示:树中节点数目在范围 [0, 100] 内-100 &原创 2022-05-20 17:20:04 · 477 阅读 · 0 评论