
算法题_树
wenkun97
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LeetCode 程序员面试经典面试题 04.06. 后继者
设计一个算法,找出二叉搜索树中指定节点的“下一个”节点(也即中序后继)。如果指定节点没有对应的“下一个”节点,则返回null。示例 1:输入: root = [2,1,3], p = 12/ \1 3输出: 2示例 2:输入: root = [5,3,6,2,4,null,null,1], p = 6 5 / \3 6/ 2 4/1输出: null有递归法和非递归法:思想类似, 与root 节点比较,若p.val >= root.val, 从右子原创 2020-08-16 22:14:01 · 190 阅读 · 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/ 4 4返回 false 。tips : 自顶向上法, 时间复杂度O(n)cla原创 2020-05-10 20:25:22 · 171 阅读 · 0 评论 -
LeetCode 144. 二叉树的前序遍历
给定一个二叉树,返回它的 前序 遍历。示例:输入: [1,null,2,3]12/3输出: [1,2,3]进阶: 递归算法很简单,你可以通过迭代算法完成吗?tips : 非递归法,使用栈,先压右子节点,再压左子节点。class Solution {public: vector<int> preorderTraversal(TreeNode* root) ...原创 2020-04-26 16:29:25 · 202 阅读 · 0 评论 -
LeetCode 145. 二叉树的后序遍历
给定一个二叉树,返回它的 后序 遍历。示例:输入: [1,null,2,3]12/3输出: [3,2,1]进阶: 递归算法很简单,你可以通过迭代算法完成吗?非递归版tips : 使用栈来记录,类似dfs, 先求出其逆后序遍历的结果,然后再反转/** * Definition for a binary tree node. * struct TreeNode { * ...原创 2020-04-25 15:39:48 · 143 阅读 · 0 评论 -
LeetCode 501. 二叉搜索树中的众数
给定一个有相同值的二叉搜索树(BST),找出 BST 中的所有众数(出现频率最高的元素)。假定 BST 有如下定义:结点左子树中所含结点的值小于等于当前结点的值结点右子树中所含结点的值大于等于当前结点的值左子树和右子树都是二叉搜索树例如:给定 BST [1,null,2,2],12/2返回[2].提示:如果众数超过1个,不需考虑输出顺序进阶:你可以不使用额外的空间吗?(...原创 2020-04-23 23:16:24 · 153 阅读 · 0 评论 -
LeetCode 450. 删除二叉搜索树中的节点
给定一个二叉搜索树的根节点 root 和一个值 key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。说明: 要求算法时间复杂度为 O(h),h 为树的高度。tips : 递归,删除该位置节点后,要用前驱/后继来替代,然后再递归删除节点。cl...原创 2020-04-15 14:47:24 · 152 阅读 · 0 评论 -
LeetCode 54.二叉搜索树的第k大节点
给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 13/ \1 4\2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 35/ \3 6/ \2 4/1输出: 4tips: 逆中序遍历, 维护一个全局计数器,当计数器到达k时,记...原创 2020-03-11 12:58:49 · 211 阅读 · 0 评论 -
Leetcode 543.二叉树的直径
给定一棵二叉树,你需要计算它的直径长度。一棵二叉树的直径长度是任意两个结点路径长度中的最大值。这条路径可能穿过根结点。示例 :给定二叉树 1 / \ 2 3 / \ 4 5 返回 3, 它的长度是路径 [4,2,1,3] 或者 [5,2,1,3]。注意:两结点之间的路径长度是以它们之间边的数目表示。tips:递归,开一个全...原创 2020-03-10 14:53:13 · 129 阅读 · 0 评论 -
Leetcode 235. 二叉搜索树的最近公共祖先
给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]示例 1:输入: root = [6,2,...原创 2020-03-09 12:47:11 · 344 阅读 · 0 评论 -
Leetcode 98. 验证二叉搜索树
给定一个二叉树,判断其是否是一个有效的二叉搜索树。假设一个二叉搜索树具有如下特征:节点的左子树只包含小于当前节点的数。节点的右子树只包含大于当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例 1:输入:2/ 1 3输出: true示例 2:输入:5/ 1 4/ 3 6输出: false解释: 输入为: [5,1,4,null,null,3...原创 2020-03-02 23:26:28 · 120 阅读 · 0 评论