二叉树类题目
文章平均质量分 69
二叉树类题目
大家好我是Boger
吾于此生,竭尽所能
展开
-
LeetCode 108 将有序数组转换为二叉搜索树 -- 递归法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/convert-sorted-array-to-binary-search-tree题意:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 高度平衡 二叉搜索树。高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高度差的绝对值不超过 1 」的二叉树。示例 1:输入:nums = [-10,-3,0,5,9]输出:[0,-3,9,-10,null,5]解释:[原创 2022-02-15 02:23:23 · 195 阅读 · 0 评论 -
LeetCode 669 修剪二叉搜索树 -- 递归法和迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/trim-a-binary-search-tree题意:给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在 唯一的答案 。所以结果应当返回修剪好的二叉搜索树的新的根节点。注意,根节点可能原创 2022-02-14 19:44:47 · 279 阅读 · 0 评论 -
LeetCode 236 二叉树的最近公共祖先 -- 递归法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lowest-common-ancestor-of-a-binary-tree题意:给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”示例 1:输入:root = [3,5,1,6,2,0,8,nul原创 2022-02-12 15:25:37 · 263 阅读 · 0 评论 -
LeetCode 501 二叉搜索树中的众数 -- 递归法和迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-mode-in-binary-search-tree题意:给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。如果树中有不止一个众数,可以按 任意顺序 返回。假定 BST 满足如下定义:结点左子树中所含节点的值 小于等于 当前节点的值结点右子树中所含节点的值 大于等于 当前节点的值左子树和右子树都是二叉搜索树原创 2022-02-11 18:32:20 · 413 阅读 · 0 评论 -
LeetCode 98 验证二叉搜索树 -- 递归法和迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/validate-binary-search-tree题意:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:root = [2,1,3]输出:true示例 2:输入:root = [5,1,4,原创 2022-02-10 20:31:51 · 547 阅读 · 0 评论 -
LeetCode 700 二叉搜索树中的搜索 -- 递归法和迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/search-in-a-binary-search-tree题意:给定二叉搜索树(BST)的根节点 root 和一个整数值 val。你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。示例 1:输入:root = [4,2,7,1,3], val = 2输出:[2,1,3]Example 2:输入:root = [4,2原创 2022-02-10 17:48:51 · 479 阅读 · 0 评论 -
LeetCode 654 最大二叉树 -- 递归法构造二叉树
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-binary-tree题意:给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建:创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。返回 nums 构建的 最大二叉树 。示例 1:输入:nums = [3,2,1,6,0,5]原创 2022-02-09 21:23:09 · 406 阅读 · 0 评论 -
LeetCode 106 / 105 从中序与后序 / 前序与中序遍历序列构造二叉树
文章目录LeetCode 106 从中序与后序遍历序列构造二叉树LeetCode 105 从前序与中序遍历序列构造二叉树参考文章LeetCode 106 从中序与后序遍历序列构造二叉树来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal题意:给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树原创 2022-02-07 22:10:26 · 1585 阅读 · 0 评论 -
LeetCode 112和113 路径总和 路径总和II -- 递归法
文章目录LeetCode 112 路径总和LeetCode 113 路径总和II参考文章 LeetCode 112 路径总和来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/path-sum题意:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶原创 2022-02-06 19:33:28 · 1805 阅读 · 0 评论 -
LeetCode 513 找树左下角的值
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/find-bottom-left-tree-value题意:给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。假设二叉树中至少有一个节点。示例 1:输入: root = [2,1,3]输出: 1示例 2:输入: [1,2,3,4,null,5,6,null,null,7]输出: 7提示:二叉树的节点个数的范围是 [1,104]-231 <=原创 2022-02-03 18:26:47 · 491 阅读 · 0 评论 -
LeetCode 404 左叶子之和 -- 迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/sum-of-left-leaves题意:计算给定二叉树的所有左叶子之和。示例: 3 / \ 9 20 / \ 15 7在这个二叉树中,有两个左叶子,分别是 9 和 15,所以返回原创 2022-02-03 18:09:02 · 1606 阅读 · 0 评论 -
LeetCode 257 二叉树的所有路径 -- 递归法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/binary-tree-paths题意:给你一个二叉树的根节点 root ,按 任意顺序 ,返回所有从根节点到叶子节点的路径。叶子节点 是指没有子节点的节点。示例 1:输入:root = [1,2,3,null,5]输出:[“1->2->5”,“1->3”]示例 2:输入:root = [1]输出:[“1”]提示:树中节点的数目在范围 [1, 100] 内-1原创 2022-02-03 00:33:23 · 476 阅读 · 0 评论 -
LeetCode 110 平衡二叉树 -- 递归法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/balanced-binary-tree题意:给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。示例 1:输入:root = [3,9,20,null,null,15,7]输出:true示例 2:输入:root = [1,2,2,3,3,null,null,4,4]输出:false示例原创 2022-02-02 15:10:23 · 304 阅读 · 0 评论 -
LeetCode 222 完全二叉树的节点个数
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/count-complete-tree-nodes题意:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。示例 1:输入:root = [1,2,3,4,5,6]输出:6示例原创 2022-02-02 03:44:29 · 335 阅读 · 0 评论 -
LeetCode 101 对称二叉树 -- 递归法和迭代法
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/symmetric-tree题意:给你一个二叉树的根节点 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-01-31 20:51:33 · 371 阅读 · 0 评论 -
LeetCode 226 翻转二叉树 -- 二叉树遍历
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/invert-binary-tree题意:给你一棵二叉树的根节点 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 &l原创 2022-01-31 17:06:36 · 550 阅读 · 0 评论 -
LeetCode上10道关于二叉树层序遍历的题目 -- 熟练二叉树层序遍历
参考文章LeetCode 102 二叉树的层序遍历二叉树层序遍历的模板,使用队列来完成。由于需要将每一层的节点放在一起,所以我们每次遍历新的一层的时候,记录下当前队列的大小,因为当前队列的大小就代表当前层的节点数!要用一个变量来记录当前队列大小,而不能直接使用deque.size(),因为deque.size()是变化的!随着你在遍历这一层并不断将它们的左右儿子推入队列中,deque.size()是一直在变大的,并不能代表当前正在遍历的层的节点个数!class Solution { public L原创 2022-01-30 20:41:05 · 1547 阅读 · 1 评论 -
LeetCode 144 145 94 二叉树的三种遍历 -- 迭代法
参考文章1参考文章2思路:之前我们学习了使用递归法来进行二叉树的三种遍历,这次我们考虑使用迭代法来进行遍历,使用栈来实现。推荐将两篇参考文章都看一遍。在两篇参考文章中,第一篇讲了如何使用迭代法来遍历,但是三种遍历方式的实现并不是特别统一,没法像递归法一样仅修改中间元素的访问时机来非常简单地从一种遍历顺序改造为另一种遍历顺序,而是需要较大幅度修改代码。第二篇则讲了如何将这种迭代法改造为可以统一实现的方式。本篇文章中所附代码使用的是第二篇参考文章中提及的统一实现的方式。注意点:1、推入栈的顺序需要注原创 2022-01-30 01:36:38 · 190 阅读 · 0 评论 -
LeetCode 144 145 94 二叉树的三种遍历 -- 递归法
参考文章思路:使用递归法来进行二叉树的三种遍历。注意在LeetCode上写法是并没有直接使用LeetCode给的方法来递归,而是自己再写一个没有返回值的方法来递归,并通过传递列表来更新答案,这样写起来更方便一点。使用递归方法时,要注意确定递归方法的参数和返回值,以及要确定终止条件。中间节点的顺序就是所谓的遍历方式,可以看以下代码中递归方法的调用部分。前序遍历:中左右中序遍历:左中右后序遍历:左右中Java代码:《LeetCode 144 二叉树的前序遍历》class Solution {原创 2022-01-29 21:34:50 · 401 阅读 · 0 评论