二叉树
文章平均质量分 54
我很忙2010
咩
展开
-
leetcode 统计值等于子树平均值的节点数
给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。注意:n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。root 的 子树 由 root 和它的所有后代组成。 示例 1:输入:root = [4,8,5,0,1,null,6]输出:5解释:对值为 4 的节点:子树的平均值 (4 + 8 + 5 + 0 + 1 + 6) / 6 = 24 / 6 = 4 。对值为 5 的节点:子.原创 2022-05-09 00:07:59 · 424 阅读 · 0 评论 -
leetcode 1609. 奇偶树
如果一棵二叉树满足下述几个条件,则可以称为奇偶树:二叉树根节点所在层下标为0,根的子节点所在层下标为1,根的孙节点所在层下标为2,依此类推。 偶数下标层上的所有节点的值都是奇整数,从左到右按顺序严格递增 奇数下标层上的所有节点的值都是偶整数,从左到右按顺序严格递减给你二叉树的根节点,如果二叉树为奇偶树,则返回true,否则返回false。示例 1:输入:root = [1,10,4,3,null,7,9,12,8,6,null,null...原创 2021-12-26 00:03:25 · 136 阅读 · 0 评论 -
leetcode 1457. 二叉树中的伪回文路径(C++)
给你一棵二叉树,每个节点的值为 1 到 9 。我们称二叉树中的一条路径是 「伪回文」的,当它满足:路径经过的所有节点值的排列中,存在一个回文序列。请你返回从根到叶子节点的所有路径中伪回文路径的数目。示例 1:输入:root = [2,3,1,3,1,null,1]输出:2 解释:上图为给定的二叉树。总共有 3 条从根到叶子的路径:红色路径 [2,3,3] ,绿色路径 [2,1,1] 和路径 [2,3,1] 。 在这些路径中,只有红色和绿色的路径是伪回文路径,因为红色...原创 2020-05-26 18:56:33 · 287 阅读 · 0 评论 -
leetcode 5398. 统计二叉树中好节点的数目(C++)
给你一棵根为root的二叉树,请你返回二叉树中好节点的数目。「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。示例 1:输入:root = [3,1,4,3,null,1,5]输出:4解释:图中蓝色节点为好节点。根节点 (3) 永远是个好节点。节点 4 -> (3,4) 是路径中的最大值。节点 5 -> (3,4,5) 是路径中的最大值。节点 3 -> (3,1,3) 是路径中的最大值。示例 2:输...原创 2020-05-16 22:57:27 · 370 阅读 · 0 评论 -
leetcode 1367. 二叉树中的列表(C++)
给你一棵以root为根的二叉树和一个head为第一个节点的链表。如果在二叉树中,存在一条一直向下的路径,且每个点的数值恰好一一对应以head为首的链表中每个节点的值,那么请你返回True,否则返回False。一直向下的路径的意思是:从树中某个节点开始,一直连续向下的路径。示例 1:输入:head = [4,2,8], root = [1,4,4,nul...原创 2020-03-01 15:22:12 · 267 阅读 · 0 评论 -
leetcode 106. 从中序与后序遍历序列构造二叉树(C++)
根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder =[9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3 / \ 9 20 / \ 15 7C++/** * Definition for a bina...原创 2020-02-17 11:50:01 · 491 阅读 · 0 评论 -
leetcode 105. 从前序与中序遍历序列构造二叉树(C++)
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder =[3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7C++前序:中左右中序:左中右后序:左右中/** ...原创 2020-02-17 11:49:01 · 148 阅读 · 0 评论 -
leetcode 最小高度树(C++)
给定一个有序整数数组,元素各不相同且按升序排列,编写一个算法,创建一棵高度最小的二叉搜索树。示例:给定有序数组: [-10,-3,0,5,9],一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 C...原创 2020-02-14 17:14:21 · 316 阅读 · 0 评论 -
leetcode 1339. 分裂二叉树的最大乘积(C++)
给你一棵二叉树,它的根为root。请你删除 1 条边,使二叉树分裂成两棵子树,且它们子树和的乘积尽可能大。由于答案可能会很大,请你将结果对 10^9 + 7 取模后再返回。示例 1:输入:root = [1,2,3,4,5,6]输出:110解释:删除红色的边,得到 2 棵子树,和分别为 11 和 10 。它们的乘积是 110 (11*10)示例 2:...原创 2020-02-02 14:21:13 · 677 阅读 · 0 评论 -
LeetCode 129. 求根到叶子节点数字之和(C++、python)
给定一个二叉树,它的每个结点都存放一个0-9的数字,每条从根到叶子节点的路径都代表一个数字。例如,从根到叶子节点路径1->2->3代表数字123。计算从根到叶子节点生成的所有数字之和。说明:叶子节点是指没有子节点的节点。示例 1:输入: [1,2,3] 1 / \ 2 3输出: 25解释:从根到叶子节点路径 1->2 ...原创 2019-01-02 19:10:29 · 325 阅读 · 0 评论 -
LeetCode 437. 路径总和 III(C++、python)
给定一个二叉树,它的每个结点都存放着一个整数值。找出路径和等于给定数值的路径总数。路径不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到子节点)。二叉树不超过1000个节点,且节点数值范围是 [-1000000,1000000] 的整数。示例:root = [10,5,-3,3,2,null,11,3,-2,null,1], sum = 8...原创 2019-01-01 14:20:46 · 181 阅读 · 0 评论 -
leetcode 1325. 删除给定值的叶子节点(C++)
给你一棵以root为根的二叉树和一个整数target,请你删除所有值为target的叶子节点。注意,一旦删除值为target的叶子节点,它的父节点就可能变成叶子节点;如果新叶子节点的值恰好也是target,那么这个节点也应该被删除。也就是说,你需要重复此过程直到不能继续删除。示例 1:输入:root = [1,2,3,2,null,2,4], t...原创 2020-01-19 14:31:22 · 512 阅读 · 0 评论 -
牛客网——按之字形顺序打印二叉树(C++)
请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : ...原创 2020-01-18 13:13:48 · 295 阅读 · 0 评论 -
牛客网——树的子结构(C++)
输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构)C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/cla...原创 2020-01-18 13:02:11 · 220 阅读 · 1 评论 -
牛客网——把二叉树打印成多行(C++)
从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { ...原创 2020-01-15 12:35:50 · 197 阅读 · 0 评论 -
leetcode 1315. 祖父节点值为偶数的节点和(C++)
给你一棵二叉树,请你返回满足以下条件的所有节点的值之和:该节点的祖父节点的值为偶数。(一个节点的祖父节点是指该节点的父节点的父节点。)如果不存在祖父节点值为偶数的节点,那么返回0。示例:输入:root = [6,7,8,2,7,1,3,9,null,1,4,null,null,null,5]输出:18解释:图中红色节点的祖父节点的值为偶数,蓝色节点为这些红色节点的...原创 2020-01-11 23:58:38 · 340 阅读 · 0 评论 -
LeetCode 104. 二叉树的最大深度(C、C++、python)
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。C/** * Definition for a binary tree...原创 2018-12-30 19:22:39 · 299 阅读 · 0 评论 -
leetcode 1305. 两棵二叉搜索树中的所有元素(C++)
给你root1和root2这两棵二叉搜索树。请你返回一个列表,其中包含两棵树中的所有整数并按升序排序。.示例 1:输入:root1 = [2,1,4], root2 = [1,0,3]输出:[0,1,1,2,3,4]示例 2:输入:root1 = [0,-10,10], root2 = [5,1,7,0,2]输出:[-10,0,0,1,2,5...原创 2019-12-29 16:29:51 · 238 阅读 · 0 评论 -
leetcode 1302. 层数最深叶子节点的和(C++)
给你一棵二叉树,请你返回层数最深的叶子节点的和。示例:输入:root = [1,2,3,4,5,null,6,7,null,null,null,null,8]输出:15提示:树中节点数目在1到10^4之间。 每个节点的值在1到100之间。C++/** * Definition for a binary tree node. * s...原创 2019-12-28 23:19:16 · 345 阅读 · 0 评论 -
leetcode 1261. 在受污染的二叉树中查找元素(C++)
给出一个满足下述规则的二叉树:root.val == 0 如果treeNode.val == x且treeNode.left != null,那么treeNode.left.val == 2 * x + 1 如果treeNode.val == x且treeNode.right != null,那么treeNode.right.val == 2 * x + 2现在这个二叉树...原创 2019-11-17 11:52:56 · 218 阅读 · 0 评论 -
leetcode 513. 找树左下角的值(C++、python)
给定一个二叉树,在树的最后一行找到最左边的值。示例 1:输入: 2 / \ 1 3输出:1示例 2:输入: 1 / \ 2 3 / / \ 4 5 6 / 7输出:7注意:您可以假设树(即给定的根节点)不为NULL。...原创 2019-05-21 19:04:25 · 213 阅读 · 0 评论 -
leetcode 515. 在每个树行中找最大值(C++、python)
您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]C++/** * Definition for a binary tree node. * struct TreeNode { * in...原创 2019-05-22 15:48:29 · 232 阅读 · 0 评论 -
leetcode 113. 路径总和 II(C++、python)
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ ...原创 2019-06-20 20:17:42 · 165 阅读 · 0 评论 -
leetcode 199. 二叉树的右视图(C++、python)
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---C++/** * ...原创 2019-06-21 13:34:52 · 151 阅读 · 0 评论 -
leetcode 226. 翻转二叉树(C++、python)
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1C++/** * Definition for a binary tree node. * struct TreeNode { * ...原创 2019-06-21 14:01:47 · 192 阅读 · 0 评论 -
leetcode 103. 二叉树的锯齿形层次遍历(C++、python)
给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]C++/** * ...原创 2019-06-21 16:05:39 · 163 阅读 · 0 评论 -
leetcode 257. 二叉树的所有路径(C++、python)
给定一个二叉树,返回所有从根节点到叶子节点的路径。说明:叶子节点是指没有子节点的节点。示例:输入: 1 / \2 3 \ 5输出: ["1->2->5", "1->3"]解释: 所有根节点到叶子节点的路径为: 1->2->5, 1->3C++/** * Definition for a bin...原创 2019-06-24 11:40:51 · 234 阅读 · 0 评论 -
牛客网——二叉树的镜像(C++、python)
题目描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5...原创 2019-06-27 22:54:21 · 236 阅读 · 0 评论 -
leetcode 1120. 子树的最大平均值(C++)
给你一棵二叉树的根节点root,找出这棵树的每一棵子树的平均值中的最大值。子树是树中的任意节点和它的所有后代构成的集合。树的平均值是树中节点值的总和除以节点数。示例:输入:[5,6,1]输出:6.00000解释: 以 value = 5 的节点作为子树的根节点,得到的平均值为 (5 + 6 + 1) / 3 = 4。以 value = 6 的节点作...原创 2019-07-14 00:14:30 · 1634 阅读 · 0 评论 -
leetcode 863. 二叉树中所有距离为 K 的结点(C++)
给定一个二叉树(具有根结点root),一个目标结点target,和一个整数值K。返回到目标结点target距离为K的所有结点的值的列表。 答案可以以任何顺序返回。示例 1:输入:root = [3,5,1,6,2,0,8,null,null,7,4], target = 5, K = 2输出:[7,4,1]解释:所求结点为与目标结点(值为 5)距离...原创 2019-07-04 19:56:44 · 511 阅读 · 0 评论 -
leetcode 814. 二叉树剪枝(C++、python)
给定二叉树根结点root,此外树的每个结点的值要么是 0,要么是 1。返回移除了所有不包含 1 的子树的原二叉树。( 节点 X 的子树为 X 本身,以及所有 X 的后代。)示例1:输入: [1,null,0,0,1]输出: [1,null,0,null,1] 解释: 只有红色节点满足条件“所有不包含 1 的子树”。右图为返回的答案。示例2:输入: [1,0...原创 2019-07-11 20:40:18 · 423 阅读 · 0 评论 -
牛客网——从上往下打印二叉树(C++、python)
题目描述从上往下打印出二叉树的每个节点,同层节点从左至右打印。C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { }};*/class Solution ...原创 2019-07-24 22:33:21 · 167 阅读 · 0 评论 -
leetcode 1161. 最大层内元素和(C++)
给你一个二叉树的根节点root。设根节点位于二叉树的第1层,而根节点的子节点位于第2层,依此类推。请你找出层内元素之和最大的那几层(可能只有一层)的层号,并返回其中最小的那个。示例:输入:[1,7,0,7,-8,null,null]输出:2解释:第 1 层各元素之和为 1,第 2 层各元素之和为 7 + 0 = 7,第 3 层各元素之和为 7 +...原创 2019-08-18 13:16:16 · 328 阅读 · 0 评论 -
leetcode 1214. 查找两棵二叉搜索树之和(C++)
给出两棵二叉搜索树,请你从两棵树中各找出一个节点,使得这两个节点的值之和等于目标值Target。如果可以找到返回True,否则返回False。示例 1:输入:root1 = [2,1,4], root2 = [1,0,3], target = 5输出:true解释:2 加 3 和为 5 。示例 2:输入:root1 = [0,-10,10], ro...原创 2019-10-06 00:45:51 · 742 阅读 · 0 评论 -
牛客网——二叉树的深度(C++)
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。C++/*struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL...原创 2019-04-08 18:54:42 · 969 阅读 · 0 评论