
树
数据结构树的相关知识
Zyy~
我们曾如此渴望命运的波澜,到最后才发现:人生最曼妙的风景,竟是内心的淡定与从容……我们曾如此期盼外界的认可,到最后才知道:世界是自己的,与他人毫无关系!
展开
-
《leetcode》剑指 Offer 07. 重建二叉树(前序中序)《树》
剑指 Offer 07. 重建二叉树难度中等567输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。示例 1:Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null,15,7]示例 2:Input: preorder = [-1], inorder = [-1]Output: [-1]限制:0 <原创 2021-09-26 14:52:17 · 214 阅读 · 0 评论 -
《leetcode》剑指 Offer 33. 二叉搜索树的后序遍历序列《单调栈》
剑指 Offer 33. 二叉搜索树的后序遍历序列难度中等253输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回true,否则返回false。假设输入的数组的任意两个数字都互不相同。参考以下这颗二叉搜索树: 5 / \ 2 6 / \ 1 3示例 1:输入: [1,6,3,2,5]输出: false示例 2:输入: [1,3,2,6,5]输出: true提示:数组长度 <= ...转载 2021-05-04 22:52:30 · 159 阅读 · 0 评论 -
《树》从中序与后序遍历序列构造二叉树《建树》
题目:106. 从中序与后序遍历序列构造二叉树根据一棵树的中序遍历与后序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树:**3/ \9 20/ \15 7代码:**```java/** * Definition for a binary tree node. * public class TreeNo原创 2021-03-19 22:04:01 · 152 阅读 · 0 评论 -
《树》二叉搜索树(BST)《Java》
简介:二叉搜索树的就是一棵二叉树,他满足节点的左孩子值不大于节点的值,右孩子的值不小于节点的值。一般来说有插入,和删除,以及遍历操作。 其中插入与删除的时间复杂度为一般情况下O(log(n)),最坏退化为链表O(n) ,遍历:时间复杂度O(n)。详细参考。代码实现:import java.util.Deque;import java.util.LinkedList;public class BST {//二叉搜索树 public static class TreeNode{原创 2021-03-07 11:20:04 · 153 阅读 · 1 评论 -
《树》面试题 04.12. 求和路径《leetcode》
面试题 04.12. 求和路径难度中等41给定一棵二叉树,其中每个节点都含有一个整数数值(该值或正或负)。设计一个算法,打印节点数值总和等于某个给定值的所有路径的数量。注意,路径不一定非得从二叉树的根节点或叶节点开始或结束,但是其方向必须向下(只能从父节点指向子节点方向)。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 .原创 2020-12-01 21:52:02 · 422 阅读 · 0 评论 -
《树》剑指 Offer 26. 树的子结构《leetcode》
剑指 Offer 26. 树的子结构难度中等151输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。例如:给定的树 A: 3 / \ 4 5 / \1 2给定的树 B: 4 /1返回 true,因为 B 与 A 的一个子树拥有相同的结构和节点值。示例 1:输入:A = [1,2,3], B = [3,1]输出:false示例...原创 2020-11-30 21:50:14 · 136 阅读 · 0 评论 -
《树》112. 路径总和《leetcode》
112. 路径总和难度简单467给定一个二叉树和一个目标和,判断该树中是否存在根节点到叶子节点的路径,这条路径上所有节点值相加等于目标和。说明:叶子节点是指没有子节点的节点。示例:给定如下二叉树,以及目标和sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ \ 7 2 ...原创 2020-11-29 21:10:59 · 114 阅读 · 0 评论 -
《树》100. 相同的树《leetcode》
100. 相同的树难度简单519给定两个二叉树,编写一个函数来检验它们是否相同。如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。示例1:输入: 1 1 / \ / \ 2 3 2 3 [1,2,3], [1,2,3]输出: true示例 2:输入: 1 1 / \ .原创 2020-11-28 15:33:43 · 149 阅读 · 0 评论 -
《树的层序遍历》103. 二叉树的锯齿形层次遍历《leetcode》
103. 二叉树的锯齿形层次遍历难度中等300给定一个二叉树,返回其节点值的锯齿形层次遍历。(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行)。例如:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回锯齿形层次遍历如下:[ [3], [20,9], [15,7]]通过次数80,723提交次数146,263思路解析:bfs+加反转Arra.原创 2020-11-27 22:19:27 · 155 阅读 · 0 评论 -
《树》剑指 Offer 54. 二叉搜索树的第k大节点《leetcode》
剑指 Offer 54. 二叉搜索树的第k大节点难度简单90给定一棵二叉搜索树,请找出其中第k大的节点。示例 1:输入: root = [3,1,4,null,2], k = 1 3 / \ 1 4 \ 2输出: 4示例 2:输入: root = [5,3,6,2,4,null,null,1], k = 3 5 / \ 3 6 / \ 2 4 / 1输出: 4限制:1...原创 2020-11-25 18:21:06 · 119 阅读 · 0 评论 -
《树》基本知识《二叉搜索(排序)树》《二叉平衡树》
近期在刷树的专题,因而对于树的一些知识进行总结。如果网上没有较好的,我会自己总结,但是如果有比较好的,我也就没总结的必要了0.0。但总之,希望大家能够更好的学习。二叉搜索树: 二叉树-详解二叉排序树 详解二叉排序树 二叉排序树(二叉查找树、二叉搜索树) 二叉平衡树:...原创 2020-11-25 14:43:34 · 118 阅读 · 0 评论 -
《树》222. 完全二叉树的节点个数《leetcode》
222. 完全二叉树的节点个数难度中等350给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~2h个节点。示例:输入: 1 / \ 2 3 / \ /4 5 6输出: 6通过次数57,299提交次数75,370思路分析:常规解法:时间复杂度:O(n) ..原创 2020-11-24 16:39:04 · 210 阅读 · 0 评论 -
最小生成树之kruskal算法
前言: 先介绍一下最小生成树。对于n个结点,用n-1条边使它们相联通,形成一棵树,这个树就叫生成树,其中所有边权值和最小的生成树就是最小生成树。其次,介绍一下kruskal算法的思想。1.讲所有边按升序排序,2,选择权值最小的边。如果边的两个结点不在一个连通分量里,就把一个结点的根节点作为另一个结点的根节点的子节点;反之,在同一个连通分量中,忽略掉。3.重复第二步直到所有顶点都在一个连通...原创 2019-08-12 16:58:26 · 230 阅读 · 0 评论 -
《树》102. 二叉树的层序遍历,107. 二叉树的层次遍历 II《leetcode》
102. 二叉树的层序遍历难度中等700给你一个二叉树,请你返回其按层序遍历得到的节点值。 (即逐层地,从左到右访问所有节点)。示例:二叉树:[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回其层次遍历结果:[ [3], [9,20], [15,7]]通过次数218,828提交次数343,384思路解析:广度优先遍历-->层次遍历深度优先遍历->...原创 2020-11-22 12:54:25 · 198 阅读 · 0 评论 -
二叉排序树(C++)
问题: 给定一个结点序列,确定一棵二叉排序树,并给出其前序,中序,后序遍历。输入:51 6 5 9 8思路: 首先,需要了解二叉排序树的特点。比根节点小的结点在其左子树,比根节点大的结点在其右子树。其中序遍历(左根右)刚好是一个升序序列。 其次:明白建树过程就是一个插入的过程,有三种情况:1.插入第一个节点,作根节点。2.比根节点的值小,插入其左子树。3.比根节...原创 2019-08-11 16:52:18 · 332 阅读 · 0 评论 -
二叉树遍历_前序中序确定其后序(C++)
前言: 说到二叉树,我之前写过一篇博客,讲的就是二叉树的遍历,但是为什么再讲一遍呢? 当然,因为不同。这也解决了我之前关于树的一个疑惑。我当时建树的时候是前序建树,只有前序遍历的结果,并不能唯一的确定一棵二叉树,因而我采用了类似 a b null null c null null 的形式来确定化其树的形态,而一旦知道了中序遍历还有(前序遍历和后序遍历)的任何一个,就可以确定其二叉树形态...原创 2019-08-11 16:38:13 · 885 阅读 · 0 评论 -
Huffman树构造基础java版
前言:Huffman树,即最小生成树。其构造过程如下:哈夫曼树并不唯一,但带权路径长度一定是相同的。如下,有权值为1,5,8,4的四个结点,其huffman树构造过程如下:总的来说,可以归结为以下几个步骤:假设有n个权值,则构造出的哈夫曼树有n个叶子结点。 n个权值分别设为 w1、w2、…、wn,哈夫曼树的构造规则为:1. 将w1、w2、…,wn看成是有n ...原创 2019-05-14 17:14:51 · 982 阅读 · 0 评论 -
浅谈二叉树的建树与遍历 (C++ C附二叉树前序建树和前序遍历代码(递归与非递归版),中序遍历非递归版)
欲谈树之遍历,先谈树之结构 :看代码:struct Node{ char data; Node * lChild; Node * rChild;} *BiTree;顾名思义,树是结点的集合。如上代码,我们定义了结点的结构。那么,问题来了,我们如何访问节点? 答案很简单,指针。即Node * q q表示指向结点的指针 。 那么按照这个思路,...原创 2019-04-12 11:45:05 · 1358 阅读 · 0 评论