
二叉树
iblue_coffee
一个又菜还不承认自己菜的追梦人。
展开
-
LeetCode第589题解析
给定一个 N 叉树,返回其节点值的前序遍历。例如,给定一个3叉树:返回其前序遍历:[1,3,5,6,2,4]。说明:递归法很简单,你可以使用迭代法完成此题吗?解法一:递归class Solution {public: vector<int> res; vector<int> preorder(Node* root) { pre_Traversal(root); return res; }...原创 2020-07-23 21:38:14 · 333 阅读 · 0 评论 -
LeetCode第590题解析
给定一个 N 叉树,返回其节点值的后序遍历。例如,给定一个3叉树:返回其后序遍历:[5,6,3,2,4,1].说明:递归法很简单,你可以使用迭代法完成此题吗?解法一:递归class Solution {public: //存放结果 vector<int> res; vector<int> postorder(Node* root) { post_Traversal(root); retu...原创 2020-07-23 21:47:12 · 192 阅读 · 0 评论 -
LeetCode第102题解析
给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]解法一:利用迭代的方式,即BFSclass Solution {public: vector<vector<int>> levelOrde..原创 2020-07-24 09:24:00 · 205 阅读 · 0 评论 -
LeetCode第429题解析
给定一个 N 叉树,返回其节点值的层序遍历。 (即从左到右,逐层遍历)。例如,给定一个3叉树:返回其层序遍历:[ [1], [3,2,4], [5,6]]说明:树的深度不会超过1000。 树的节点总数不会超过5000。解法其实和二叉树的层序遍历是一样的。解法一:递归,即DFS,深度优先遍历class Solution {public: vector<vector<int>> res; v...原创 2020-07-24 19:20:20 · 234 阅读 · 0 评论 -
LeetCode第98题解析
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例1:输入: 2 / \ 1 3输出: true示例2:输入: 5 / \ 1 4 / \ 3 6输出: false解释: 输入为: [5,1,4,null,null,3,6]。 根节点的值为 5...原创 2020-07-24 22:44:08 · 490 阅读 · 0 评论 -
LeetCode第226题解析
翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的软件(Homebrew),但是您却无法在面试时在白板上写出翻转二叉树这道题,这太糟糕了。解法一:使用递归的方法。class Solution原创 2020-07-25 21:44:30 · 256 阅读 · 0 评论 -
LeetCode第104题解析
给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度3 。解法一:递归class Solution {public: int maxDepth(TreeNode* root) { int maxdepth = 0;...原创 2020-07-25 22:36:11 · 165 阅读 · 0 评论 -
LeetCode第111题解析
给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.解法一:利用递归。与求二叉树最大深度类似,只不过只是将最大深度换成了最小深度。class Solution {public: int minDepth(TreeNode* ...原创 2020-07-26 21:24:35 · 305 阅读 · 0 评论 -
LeetCode第297题解析
序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: 1 / \ 2 3 / \ 4 5序列化为 "[1,2,3,nul.原创 2020-07-27 20:46:40 · 250 阅读 · 0 评论 -
LeetCode第236题解析
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树:root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1输出: 3解释: 节点 5...原创 2020-07-27 21:11:38 · 329 阅读 · 0 评论 -
LeetCode第105题解析
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]返回如下的二叉树: 3 / \ 9 20 / \ 15 7方法一:递归思路对于任意一颗树而言,前序遍历的形式总是[ 根节点, [左子树的前序遍历结果], [右子树的前序遍历结果] ]即根节点总是前序遍历中的第一个节点。而.原创 2020-07-28 21:07:15 · 469 阅读 · 0 评论 -
LeetCode第515题解析
您需要在二叉树的每一行中找到最大的值。示例:输入: 1 / \ 3 2 / \ \ 5 3 9 输出: [1, 3, 9]class Solution {public: //DFS vector<int> largestValues(TreeNode* root) { vector<int> res; q...原创 2020-08-01 21:55:47 · 190 阅读 · 0 评论 -
LeetCode第199题解析
给定一棵二叉树,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。示例:输入:[1,2,3,null,5,null,4]输出:[1, 3, 4]解释: 1 <--- / \2 3 <--- \ \ 5 4 <---1、层序遍历class Solution {public: //层序遍历 vector<int> r..原创 2020-09-10 22:20:50 · 339 阅读 · 0 评论 -
LeetCode第110题解析
给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点的左右两个子树的高度差的绝对值不超过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...原创 2020-09-17 15:11:41 · 216 阅读 · 0 评论