
树
少喝烫水
嘘!
展开
-
对称的二叉树
请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/dui-ch原创 2020-09-07 18:42:25 · 95 阅读 · 0 评论 -
二叉树的下一个节点
题目描述 给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。 思路: 首先需要分两种情况: 此节点存在右子树,那么它的下一个节点就为右子树中的最左节点 此节点不存在右子树,可能是最右节点,也可能是最左节点 如果它为最左节点,那么下一个节点就是node->next,即它的父节点 如果它为最右节点,那么下一个节点就是父节点的父节点的父节点,或者不存在 /* public class TreeLinkNode {原创 2020-09-07 18:22:15 · 205 阅读 · 0 评论 -
路径总和 II(dfs)
给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1 返回: [ [5,4,11,2], [5,8,4原创 2020-09-02 18:29:19 · 212 阅读 · 0 评论 -
二叉树的层序遍历
给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 示例: 二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其层次遍历结果: [ [3], [9,20], [15,7] ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-level-order-traversal 著作权归领扣网原创 2020-09-01 22:56:38 · 141 阅读 · 0 评论 -
二叉树的中序遍历
给定一个二叉树,返回它的中序 遍历 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 递归: /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * }原创 2020-09-01 22:34:19 · 130 阅读 · 0 评论 -
翻转二叉树
翻转一棵二叉树。 示例: 输入: 4 / \ 2 7 / \ / \ 1 3 6 9 输出: 4 / \ 7 2 / \ / \ 9 6 3 1 递归 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; *原创 2020-08-29 11:07:08 · 120 阅读 · 0 评论 -
路径总和
给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 1 返回 true, 因为存在目标和为 2原创 2020-08-29 10:49:51 · 89 阅读 · 0 评论 -
二叉树的最小深度
给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最小深度 2. 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/minimum-depth-of-binary-tree 著作权归领扣网络所有。商业转载请联系官方原创 2020-08-28 22:15:21 · 662 阅读 · 0 评论 -
平衡二叉树
给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二叉树 [1,2,2,3,3,null,null,4,4] 1 / \ 2 2 / \ 3 3 / \ 4原创 2020-08-28 19:46:37 · 120 阅读 · 0 评论 -
将有序数组转换为二叉搜索树
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。 示例: 给定有序数组: [-10,-3,0,5,9], 一个可能的答案是:[0,-3,9,-10,null,5],它可以表示下面这个高度平衡二叉搜索树: 0 / \ -3 9 / / -10 5 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/c原创 2020-08-28 18:43:39 · 95 阅读 · 0 评论 -
二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) 例如: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回其自底向上的层次遍历为: [ [15,7], [9,20], [3] ] 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-tree-level-order-tra原创 2020-08-28 17:16:43 · 84 阅读 · 0 评论 -
二叉树的最大深度
给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7 返回它的最大深度 3 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/maximum-depth-of-binary-tree 著作权归领扣网络所有。商业转载请联系官方原创 2020-08-26 22:09:12 · 182 阅读 · 0 评论 -
对称二叉树
给定一个二叉树,检查它是否是镜像对称的。 例如,二叉树 [1,2,2,3,4,4,3] 是对称的。 1 / \ 2 2 / \ / \ 3 4 4 3 但是下面这个 [1,2,2,null,3,null,3] 则不是镜像对称的: 1 / \ 2 2 \ \ 3 3 BFS /** * Definition for a binary tree node. * public class TreeNode { * int v原创 2020-08-26 21:52:27 · 97 阅读 · 0 评论 -
相同的树
给定两个二叉树,编写一个函数来检验它们是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/same-tree 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 dfs方法 /** * Definition for a binary tree node. * public class TreeNode { * int val; * T原创 2020-08-26 20:07:31 · 149 阅读 · 0 评论 -
二叉搜索树的后序遍历序列
题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。 思路 二叉搜索树 根节点的值大于其左子树中任意一个节点的值,小于其右节点中任意一节点的值,这一规则适用于二叉查找树中的每一个节点。 后序遍历 先遍历左子树,再遍历右子树,最后访问根节点,在遍历左,右子树时,仍然先遍历左子树,然后遍历右子树,最后遍历根...原创 2020-04-06 21:30:56 · 175 阅读 · 0 评论 -
二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 感觉...原创 2020-03-26 18:26:37 · 95 阅读 · 0 评论 -
树的子结构
题目描述 输入两棵二叉树A,B,判断B是不是A的子结构。(ps:我们约定空树不是任意一个树的子结构) 题解参考:https://blog.nowcoder.net/n/0a7ab5e0ea0749279462d9e413232a94?f=comment 首先分清子树和子结构 子树 一棵大树A,一棵小树B,若B是A的子树,则: B和A的结点值完全相同,它们俩的左子树,右子树的值也完全相同 或者B的...转载 2020-03-26 17:58:09 · 127 阅读 · 0 评论 -
树
树 对于大量的输入数据,链表的线性访问时间太慢,不宜使用。本章讨论一种简单的数据结构,其大部分操作的运行时间平均为O(log N)。我们要简述这种数据结构上在概念上的简单修改,它保证了在最坏清醒下上述的时间界。此外,还讨论了第二种修改,对于长的指令序列它基本上给出每种操作O(log N)运行时间。 这种数据结构叫做二叉查找树(binary search tree)。二叉查找树是两种库集合类Tree...原创 2020-03-07 00:44:30 · 282 阅读 · 0 评论 -
重建二叉树
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。 分析: 前序遍历:根 - 左 - 右 中序遍历:左 - 根 - 右 确定二叉树的过程为: 根据前序遍历的一个节点确定根节点 根据根节点将中序遍历序列分...转载 2020-03-07 00:42:47 · 72 阅读 · 0 评论 -
P1087 FBI树
题目描述 我们可以把由“0”和“1”组成的字符串分为三类:全“0”串称为B串,全“1”串称为I串,既含“0”又含“1”的串则称为F串。 FBI树是一种二叉树,它的结点类型也包括F结点,B结点和I结点三种。由一个长度为2^N的“01”串S可以构造出一棵FBI树T,递归的构造方法如下: T的根结点为R,其类型与串S的类型相同; 若串S的长度大于1,将串S从中间分开,分为等长的左右子串S1和S2...原创 2018-09-30 15:48:57 · 134 阅读 · 0 评论 -
二叉树
先序遍历:根->左->右 void order(Node*node){ if(node!=NULL){ cout<<node->date<<endl; preorder(node->left); preorder(node->right); } } 中序遍历:左->根->右 void ord...原创 2018-09-29 11:36:23 · 122 阅读 · 0 评论