摘要: 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 示例 1: 输入:p = [1,2,3], q = [1,2,3] 输出:true 示例 2: 输入:p = [1,2], q = [1,null,2] 输 阅读全文
posted @ 2021-04-29 14:47 kpwong 阅读(78) 评论(0) 推荐(0) 编辑
摘要: 如果一棵二叉树满足下述几个条件,则可以称为 奇偶树 : 二叉树根节点所在层下标为 0 ,根的子节点所在层下标为 1 ,根的孙节点所在层下标为 2 ,依此类推。 偶数下标 层上的所有节点的值都是 奇 整数,从左到右按顺序 严格递增 奇数下标 层上的所有节点的值都是 偶 整数,从左到右按顺序 严格递减 阅读全文
posted @ 2021-04-29 14:41 kpwong 阅读(86) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 给定一棵有 n 个结点的二叉树,你的任务是检查是否可以通过去掉树上的一条边将树分成两棵,且这两棵树结点之和相等。 样例 1: 输入: 5 / \ 10 10 / \ 2 3 输出: True 解释: 5 / 10 和: 15 10 / \ 2 3 和: 15 样例 2: 输入: 1 / 阅读全文
posted @ 2021-04-29 14:15 kpwong 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。 示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2 给定的树 t: 4 / \ 1 2 返回 true,因为 t 阅读全文
posted @ 2021-04-29 13:58 kpwong 阅读(51) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 给定一棵二叉树,以逆时针顺序从根开始返回其边界。 边界按顺序包括左边界、叶子结点和右边界而不包括重复的结点。 (结点的值可能重复) 左边界的定义是从根到最左侧结点的路径。 右边界的定义是从根到最右侧结点的路径。 若根没有左子树或右子树,则根自身就是左边界或右边界。 注意该定义只对输入的二 阅读全文
posted @ 2021-04-29 13:48 kpwong 阅读(124) 评论(0) 推荐(0) 编辑
摘要: 实现一个函数,检查一棵二叉树是否为二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 / \ 3 6 输出: false 解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5 ,但是其右子节点值为 4 。 简单好 阅读全文
posted @ 2021-04-29 12:12 kpwong 阅读(59) 评论(0) 推荐(0) 编辑
摘要: 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树不应该改变保留在树中的元素的相对结构(即,如果没有被移除,原有的父代子代关系都应当保留)。 可以证明,存在唯一的答案。 所以结果应当返回修剪好的二叉 阅读全文
posted @ 2021-04-29 11:07 kpwong 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 给定一个不含重复元素的整数数组 nums 。一个以此数组直接递归构建的 最大二叉树 定义如下: 二叉树的根是数组 nums 中的最大元素。左子树是通过数组中 最大值左边部分 递归构造出的最大二叉树。右子树是通过数组中 最大值右边部分 递归构造出的最大二叉树。返回有给定数组 nums 构建的 最大二叉 阅读全文
posted @ 2021-04-29 10:32 kpwong 阅读(81) 评论(0) 推荐(0) 编辑
摘要: 给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过也可能不穿过根结点。 示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。 递归解法: /** * Defini 阅读全文
posted @ 2021-04-29 10:06 kpwong 阅读(19) 评论(0) 推荐(0) 编辑
摘要: 我们可以为二叉树 T 定义一个翻转操作,如下所示:选择任意节点,然后交换它的左子树和右子树。 只要经过一定次数的翻转操作后,能使 X 等于 Y,我们就称二叉树 X 翻转等价于二叉树 Y。 编写一个判断两个二叉树是否是翻转等价的函数。这些树由根节点 root1 和 root2 给出。 示例: 输入:r 阅读全文
posted @ 2021-04-29 09:51 kpwong 阅读(66) 评论(0) 推荐(0) 编辑
摘要: 如果二叉树每个节点都具有相同的值,那么该二叉树就是单值二叉树。 只有给定的树是单值二叉树时,才返回 true;否则返回 false。 示例 1: 输入:[1,1,1,1,1,null,1] 输出:true 示例 2: 输入:[2,2,2,5,2] 输出:false 解法:遍历二叉树,节点值放入Set 阅读全文
posted @ 2021-04-29 09:34 kpwong 阅读(54) 评论(0) 推荐(0) 编辑
摘要: 从左向右遍历一个数组,通过不断将其中的元素插入树中可以逐步地生成一棵二叉搜索树。给定一个由不同节点组成的二叉搜索树,输出所有可能生成此树的数组。 示例:给定如下二叉树 2 / \ 1 3 返回: [ [2,1,3], [2,3,1] ] 大佬写的。未仔细研究:) 搜索 使用一个queue存储下个所有 阅读全文
posted @ 2021-04-29 08:35 kpwong 阅读(56) 评论(0) 推荐(0) 编辑
摘要: 给你二叉搜索树的根节点 root ,该树中的两个节点被错误地交换。请在不改变其结构的情况下,恢复这棵树。 进阶:使用 O(n) 空间复杂度的解法很容易实现。你能想出一个只使用常数空间的解决方案吗? 示例 1: 输入:root = [1,3,null,null,2] 输出:[3,1,null,null 阅读全文
posted @ 2021-04-29 08:28 kpwong 阅读(141) 评论(0) 推荐(0) 编辑
摘要: 给定一个二叉树,判断其是否是一个有效的二叉搜索树。 假设一个二叉搜索树具有如下特征: 节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1: 输入: 2 / \ 1 3 输出: true 示例 2: 输入: 5 / \ 1 4 阅读全文
posted @ 2021-04-29 08:12 kpwong 阅读(27) 评论(0) 推荐(0) 编辑
摘要: 1. 题目 给定一个二叉树,其中所有的右节点要么是具有兄弟节点(拥有相同父节点的左节点)的叶节点,要么为空将此二叉树上下翻转并将它变成一棵树, 原来的右节点将转换成左叶节点。返回新的根。 例子: 输入: [1,2,3,4,5] 1 / \ 2 3 / \ 4 5 输出: 返回二叉树的根 [4,5,2 阅读全文
posted @ 2021-04-29 08:01 kpwong 阅读(224) 评论(0) 推荐(0) 编辑