
二叉树
文章平均质量分 82
二叉树
怪我冷i
这个作者很懒,什么都没留下…
展开
-
数据结构与算法——红黑树(上)
为什么工程中都用红黑树这种二叉树?上两节,我们依次讲了树、二叉树、二叉查找树。二叉查找树是最常用的一种二叉树,它支持快速插入、删除、查找操作,各个操作的时间复杂度跟树的高度成正比,理想情况下,时间复杂度是O(logn)。不过,二叉查找树在频繁的动态更新过程中,可能会出现树的高度远大于log2n的情况,从而导致各个操作的效率下降。极端情况下,二叉树会退化为链表,时间复杂度会退化到O(n)。我上一节说了,要解决这个复杂度退化的问题,我们需要设计一种平衡二叉查找树,也就是今天要讲的这种数据结构。很多书籍原创 2021-04-09 21:51:46 · 280 阅读 · 0 评论 -
数据结构与算法——红黑树(下)
文章目录实现红黑树的基本思想基本操作插入操作的平衡调整CASE1CASE2CASE3附地址实现红黑树的基本思想不知道你有没有玩过魔方?其实魔方的复原解法是有固定算法的:遇到哪几面是什么样子,对应就怎么转几下。你只要跟着这个复原步骤,就肯定能将魔方复原。实际上,红黑树的平衡过程跟魔方复原非常神似,大致过程就是:遇到什么样的节点排布,我们就对应怎么去调整。只要按照这些固定的调整规则来操作,就能将一个非平衡的红黑树调整成平衡的。还记得我们前面讲过的红黑树的定义吗?今天的内容里,我们会频繁用到它,所以,我们现原创 2021-04-09 21:32:13 · 154 阅读 · 0 评论 -
二叉树的前序遍历,中序遍历,后序遍历详解
二叉树的前序遍历,中序遍历,后序遍历详解二叉树的前序,中序,后序遍历方法总结原创 2020-05-22 16:31:24 · 343 阅读 · 0 评论 -
199. 二叉村的右视图(Binary Tree Right Side View)——DFS和BFS
199. 二叉村的右视图(Binary Tree Right Side View)Given a binary tree, imagine yourself standing on the right side of it, return the values of the nodes you can see ordered from top to bottom.Example:Input:...原创 2020-04-22 15:55:54 · 156 阅读 · 0 评论 -
LeetCode-222-二叉树的节点数-C语言和java语言
文章目录LeetCode-222-二叉树的节点数-C语言和java语言c语言java语言LeetCode-222-二叉树的节点数-C语言和java语言c语言int countNodes(struct TreeNode* root){ if(!root) return 0; if(!root->left && !root->right) r...原创 2020-02-23 16:06:51 · 160 阅读 · 0 评论 -
java-数据结构-前中后序遍历
java-数据结构-前中后序遍历遍历说明前序遍历:根-左-右中序遍历:左-根-右后序遍历:左-右-根节点的定义//先创建HeroNode 结点class HeroNode { private int no; private String name; private HeroNode left; //默认null private HeroNode right; //默认null...原创 2019-08-08 14:35:16 · 1834 阅读 · 0 评论 -
111. 二叉树的最小深度(minimum-depth-of-binary-tree)
111. 二叉树的最小深度(minimum-depth-of-binary-tree)class Solution { public int minDepth(TreeNode root) { if(root == null) return 0; //这道题递归条件里分为三种情况 //1.左孩子和有孩子都为空的情况,说明到达了叶子节点,直接...原创 2020-02-21 16:55:55 · 189 阅读 · 1 评论 -
572. 另一个树的子树(subtree-of-another-tree)递归思维解答
572. 另一个树的子树(subtree-of-another-tree)题目给定两个非空二叉树 s 和 t,检验 s 中是否包含和 t 具有相同结构和节点值的子树。s 的一个子树包括 s 的一个节点和这个节点的所有子孙。s 也可以看做它自身的一棵子树。示例 1:给定的树 s: 3 / \ 4 5 / \ 1 2给定的树 t: 4 / ...原创 2020-02-21 15:04:38 · 285 阅读 · 0 评论 -
判断路径和是否等于一个数 path-sum
判断路径和是否等于一个数 path-sum if (root == null) return false; if (root.left == null && root.right == null && root.val == sum) return true; return hasPathSum(root.left, sum - root.v...原创 2020-02-21 14:12:28 · 192 阅读 · 0 评论 -
翻转二叉树图解(invert-binary-tree)
翻转二叉树(invert-binary-tree)翻转一棵二叉树。示例:输入: 4 / \ 2 7 / \ / \1 3 6 9输出: 4 / \ 7 2 / \ / \9 6 3 1备注:这个问题是受到 Max Howell 的 原问题 启发的 :谷歌:我们90%的工程师使用您编写的...原创 2020-02-21 09:52:14 · 449 阅读 · 0 评论 -
110. 平衡二叉树(balanced-binary-tree)
110. 平衡二叉树(balanced-binary-tree)给定一个二叉树,判断它是否是高度平衡的二叉树。本题中,一棵高度平衡二叉树定义为:一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过1。示例 1:给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7返回 true 。示例 2:给...原创 2020-02-19 22:51:55 · 191 阅读 · 0 评论 -
二叉树的最大深度(maximum-depth-of-binary-tree)
二叉树的最大深度(maximum-depth-of-binary-tree)题目给定一个二叉树,找出其最大深度。二叉树的深度为根节点到最远叶子节点的最长路径上的节点数。说明: 叶子节点是指没有子节点的节点。示例:给定二叉树 [3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最大深度 3 。解题方...原创 2020-02-19 19:53:35 · 463 阅读 · 0 评论