随笔分类 - leetcode
摘要:给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 class Solution { public: long long pre = LONG_MAX; long long dif = LONG_MAX; void in
阅读全文
摘要:给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。 节点的右子树只包含 大于 当前节点的数。 所有左子树和右子树自身必须也是二叉搜索树。 class Solution { public: long long m
阅读全文
摘要:给定二叉搜索树(BST)的根节点 root 和一个整数值 val。 你需要在 BST 中找到节点值等于 val 的节点。 返回以该节点为根的子树。 如果节点不存在,则返回 null 。 class Solution { public: TreeNode* searchBST(TreeNode* ro
阅读全文
摘要:给你两棵二叉树: root1 和 root2 。 想象一下,当你将其中一棵覆盖到另一棵之上时,两棵树上的一些节点将会重叠(而另一些不会)。你需要将这两棵树合并成一棵新二叉树。合并的规则是:如果两个节点重叠,那么将这两个节点的值相加作为合并后节点的新值;否则,不为 null 的节点将直接作为新二叉树的
阅读全文
摘要:给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗二叉树 。 class Solution { public: TreeNode* buildTree(vector<int>& inor
阅读全文
摘要:给定一个二叉树和一个目标和,找到所有从根节点到叶子节点路径总和等于给定目标和的路径。 说明: 叶子节点是指没有子节点的节点。 示例: 给定如下二叉树,以及目标和 sum = 22 class Solution { private: void dfs_find(TreeNode* cur,int su
阅读全文
摘要:给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 是指没有子节点的节点。 class Solution
阅读全文
摘要:给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值。 假设二叉树中至少有一个节点。 class Solution { public: int findBottomLeftValue(TreeNode* root) { if (root == nullptr) return
阅读全文
摘要:给定二叉树的根节点 root ,返回所有左叶子之和。 class Solution { private: void sum_left(TreeNode *cur,vector<TreeNode*> &path,vector<int> &res){ path.push_back(cur); if(cu
阅读全文
摘要:给定一个二叉树,返回所有从根节点到叶子节点的路径。 说明: 叶子节点是指没有子节点的节点。 class Solution { private: void traversal(TreeNode* cur, string path, vector<string>& res) { path += std:
阅读全文
摘要:给定一个二叉树,判断它是否是高度平衡的二叉树。 本题中,一棵高度平衡二叉树定义为: 一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1 。 class Solution { public: int get_son_depth(TreeNode* root){ if(root == null
阅读全文
摘要:给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。 完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。 class Solution {
阅读全文
摘要:给定一个二叉树,找出其最小深度。 最小深度是从根节点到最近叶子节点的最短路径上的节点数量。 说明:叶子节点是指没有子节点的节点。 class Solution { public: int minDepth(TreeNode* root) { if(root == nullptr) return 0;
阅读全文
摘要:给定一个二叉树,找出其最大深度。 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。 说明: 叶子节点是指没有子节点的节点。 示例: 给定二叉树 [3,9,20,null,null,15,7], class Solution { public: int getdepth(TreeNode* n
阅读全文
摘要:给你一个二叉树的根节点 root , 检查它是否轴对称。 class Solution { public: bool isSymmetric(TreeNode* root) { //使用队列来判断左右子树的内外侧 if(root == nullptr) return true; TreeNode*
阅读全文
摘要:给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 class Solution { public: TreeNode* invertTree(TreeNode* root) { if(root==nullptr) return nullptr; else{ TreeNode *n
阅读全文
摘要:给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点) class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode():val(NULL),left(nullptr),ri
阅读全文
摘要:class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode():val(NULL),left(nullptr),right(nullptr){} TreeNode(int x):val(x),left(nul
阅读全文
摘要:class TreeNode { public: int val; TreeNode *left; TreeNode *right; TreeNode():val(NULL),left(nullptr),right(nullptr){} TreeNode(int x):val(x),left(nul
阅读全文
摘要:给定一个非空的整数数组,返回其中出现频率前 k 高的元素。 示例 1: 输入: nums = [1,1,1,2,2,3], k = 2 输出: [1,2] 示例 2: 输入: nums = [1], k = 1 输出: [1] class cmp { public: bool operator()(
阅读全文

浙公网安备 33010602011771号