
树
文章平均质量分 94
yuzhang_zy
现在的我不是最好的我,未来的我才是最好的我,每一篇博客都记录着我的成长
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
1584 连接所有点的最小费用(kruskal 算法最小生成树)
1. 问题描述:给你一个points数组,表示 2D 平面上的一些点,其中points[i] = [xi, yi]。连接点[xi, yi] 和点[xj, yj]的费用为它们之间的 曼哈顿距离:|xi - xj| + |yi - yj|,其中|val|表示val的绝对值。请你返回将所有点连接的最小总费用。只有任意两点之间 有且仅有一条简单路径时,才认为所有点都已连接示例 1:输入:points = [[0,0],[2,2],[3,10],[5,2],[7,0]]...原创 2020-09-15 22:21:46 · 540 阅读 · 0 评论 -
1325 删除给定值的叶子节点(dfs)
1. 问题描述:给你一棵以root为根的二叉树和一个整数target,请你删除所有值为target 的叶子节点 。注意,一旦删除值为target的叶子节点,它的父节点就可能变成叶子节点;如果新叶子节点的值恰好也是target ,那么这个节点也应该被删除。也就是说,你需要重复此过程直到不能继续删除。示例 1:输入:root = [1,2,3,2,null,2,4], target = 2输出:[1,null,3,null,4]解释:上面左边的图中,绿色节点为叶子...原创 2020-06-08 17:36:38 · 456 阅读 · 0 评论 -
111 二叉树的最小深度(递归)
1. 问题描述:给定一个二叉树,找出其最小深度。最小深度是从根节点到最近叶子节点的最短路径上的节点数量。说明:叶子节点是指没有子节点的节点。示例:给定二叉树[3,9,20,null,null,15,7], 3 / \ 9 20 / \ 15 7返回它的最小深度 2.来源:力扣(LeetCode)链接:https://lee...原创 2020-04-17 09:54:43 · 283 阅读 · 0 评论 -
使用递归建立一颗完全二叉树
1. 我们在编程的时候经常会遇到对于树各种遍历操作的测试,但是前提是我们要有一颗二叉树来这样才可以进行遍历,下面使用递归的方式来建立一颗完全二叉树2. 思路分析:① 我们先可以创建一个数组,里面存放的是若干个元素这样我们就可以利用根节点与左右孩子节点之间的关系来创建一棵完全二叉树假设根节点的编号为i,根节点下假如有左孩子那么左孩子的编号为2 * 1 +1,根节点下假如有右孩子那么右孩子...原创 2019-06-09 11:08:50 · 2272 阅读 · 0 评论 -
由先序遍历与中序遍历构建一棵二叉树
1. 问题描述:已知二叉树节点按先序遍历下的序列存储在一维数组pre[l1, ....r1]中,按中序遍历下的序列存储在一维数组中in[l2, ...r2]中,其中l1,r1,l2,r2指示了数组中元素(类型为char型)存储的下标范围,假定二叉树中节点的值互不相同,试写出由pre[l1...r1]和in[l2,...r2]构造出二叉树的算法2. 思路分析:① 我们根据二叉树遍历的性质...原创 2019-06-09 12:19:10 · 7435 阅读 · 2 评论 -
二叉树的后序遍历非递归算法
1. 对于树的遍历我们最常用的三种遍历方法分别是前序遍历、中序遍历和后序遍历,使用的方法是深度优先遍历树的每一个节点,这些遍历方法都是使用递归函数来进行实现的,在数据量大的情况下是比较低效的,原因在于系统帮助我们调用了一个栈并且做了诸如保护现场和恢复现场等复杂的操作,才使得遍历可以使用非常简单的代码来实现,所以我们可以模仿系统中调用的栈自己可以来写一下栈,模仿其中的过程就可以完成对于三种遍历算法的...原创 2019-06-03 11:51:45 · 44469 阅读 · 3 评论 -
二叉树节点x所在的层数
1. 问题描述:假设二叉树采用二叉链表存储结构,设计一个算法,求出二叉树b中值为x的的节点的编号2. 思路分析:① 这道题目可以使用层次遍历的方法来解决,但是使用这种方法解决的话可能有点麻烦因为所有节点的层数是不知道的,这里采用另外一种方法来解决② 对于题目中要求给出值为x所在节点的层号,这里就包含着一个查找的操作,即要在二叉树中找到这个节点,因为需要遍历二叉树,当我们遍历到一个节...原创 2019-06-09 13:22:14 · 8969 阅读 · 0 评论 -
由中序遍历与后序遍历确定一棵二叉树
1. 问题描述:题目来自于PAT A 1020,具体描述如下:Suppose that all the keys in a binary tree are distinct positive integers. Given the postorder and inorder traversal sequences, you are supposed to output the level ...原创 2019-06-28 10:14:16 · 11401 阅读 · 4 评论 -
输出树中路径之和等于给定值的所有路径
1. 问题描述:题目来自于PAT A 1053 Path of Equal Weight,具体描述如下:Given a non-empty tree with rootR, and with weightWiassigned to each tree nodeTi. Theweight of a path fromRtoLis defined to be th...原创 2019-06-28 12:04:30 · 1248 阅读 · 0 评论 -
二叉查找树的应用
1. 题目来自于PAT A 1043,问题的大概描述如下:给出一个N个正整数来作为一棵二叉排序树的节点插入顺序,问:这串序列是否是该二叉树的先序序列或者是二叉排序树的镜像树的先序序列,镜像树指的是交换根节点的左右子树形成的二叉树,如果对于输入的序列与二叉排序树的先序序列是一样的那么输出YES,并且输出二叉排序树的后序遍历的序列,如果输入的序列与二叉排序树的镜像树的先序序列是一致的,那么输出YE...原创 2019-06-28 19:07:41 · 1355 阅读 · 0 评论 -
判断一颗二叉树是否是二叉排序树
1. 问题描述:设计一个算法,判断给出的二叉树是否是二叉排序树,假设二叉排序树已经存储在二叉链表的存储结构中,树节点的个数为n,节点值为int类型2. 思路如下:① 判断一颗二叉树是否是二叉排序树的方法有好几种,其中最简单的方法是对给定的二叉树进行中序遍历,假如二叉树是二叉排序树那么中序遍历的结果一定是递增的,假如不是那么就不是二叉排序树② 基于上面的想法我们可以使用中序遍历的方法...原创 2019-09-08 11:32:42 · 23872 阅读 · 4 评论 -
B树的相关知识点
1. B树的所有节点孩子节点个数的最大值成为B树的阶,通常使用m表示,从查找效率上看,要求m >= 3,一棵m阶的B树或者是一棵空树,满足下面的几个要求:① 每个节点最多有m个分支(子树),而最少分支数需要看是否是根节点,如果是根节点而且不是叶子节点,则至少存在有两个分支,非根非叶节点至少存在 m / 2向上取整个分支② 有n个分支的节点有n - 1个关键字,它们按照递增顺序排列(节...原创 2019-09-08 20:00:26 · 4128 阅读 · 0 评论 -
三种递归方式遍历二叉树
1. 对于树的遍历有前序遍历、中序遍历、后续遍历和层次遍历,在前三种的遍历方式中我们常用的是使用递归方式来进行遍历2. ① 前序遍历:按照先遍历根节点,再遍历左孩子,最后遍历右孩子的顺序所以我们在递归的方法的一开始就可以对元素进行输出这样输出来的顺序就是前序遍历二叉树的顺序② 中序遍历:按照先遍历左孩子,再遍历根节点,最后遍历右孩子的顺序所以我们在递归左孩子结束的时候对元素进行输出这样输出...原创 2019-06-09 09:26:00 · 666 阅读 · 0 评论 -
手动创建一棵二叉树
1. 由于很久没有写C语言的程序了,对结构体这些方面的知识也忘记得差不多了,感觉写起来有点吃力,而且使用dev C++调试起来感觉有点困难,因为出现运行时错误的时候没有任何的错误信息在控制台上,所以只能够自己检查源程序来判断到底错误出现在哪里,下面是关于使用C语言创建一颗二叉树的例子,因为输入输出使用到了C++语法,所以需要引入C++的输入输出的头文件2. ① 类比于Java语言,Java语言...原创 2019-06-09 09:02:03 · 3482 阅读 · 0 评论 -
二叉树的最小深度
1. 问题描述:Given a binary tree, find its minimum depth. The minimum depth is the number of nodes aong the shortest pathfrom the root node down to the neartest leaf node.TreeNode节点的定义:public class...原创 2019-02-05 12:08:43 · 290 阅读 · 0 评论 -
路径数字串之和
1. 问题描述:Given a binary containing digits from 0-9 only, each root-to-leaf path path could represent a number.An example is the root-to-leaf path1->2->3which represents the number123Find the...原创 2019-02-05 14:10:12 · 257 阅读 · 0 评论 -
使用有序数组构建高度最低的BST
1. 问题描述:Given a sorted(increasing order) array, write an algorithm to create a binary search tree withmininal height;给出一个上升序列的数组,使用一种算法来构建一颗具有最小高度的树树节点的定义如下:public class TreeNode<T> ...原创 2019-02-05 22:45:40 · 282 阅读 · 0 评论 -
BST中某一层的所有节点(宽度优先搜索)
1. 问题描述:Given a binary search tree, design an algorithm which creates a linked list of all the nodes at each depth(if you have a tree whith depth D, you're have D linked lists)题目的意思是:给出一棵二叉树,以链表的形...原创 2019-02-06 14:13:56 · 373 阅读 · 0 评论 -
判断二叉树是否是完全的BST
1. 问题描述:判断一棵二叉树是否是完全的BST(Binary Search Tree 二叉搜索树)二叉查找树(Binary Search Tree),(二叉搜索树或者称为二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。...原创 2019-02-06 22:17:29 · 819 阅读 · 0 评论 -
二叉树中序遍历的非递归算法
1. 对于树的遍历有前序、中序、后序遍历,其中中序遍历对于一棵二叉搜索树来说得到的序列是一个上升的序列,因为树是递归定义的,所以我们在对树进行遍历的时候往往是采用递归的方式来进行处理的,而且使用递归的方式往往处理起来相对简洁一些但是有的情况下要求使用非递归方式来遍历一棵二叉搜索树,怎么样进行遍历呢?我们知道递归遍历树的方式:对于树的访问先是从根节点开始进行的,递归左子树和右子树,对于左子树和...原创 2019-02-07 10:40:49 · 3709 阅读 · 1 评论 -
不带parent指针的successor(后继)求解
1. 问题描述:请设计一个算法,寻找二叉树中指定结点的下一个结点(即中序遍历的后继),给定树的根结点指针TreeNode* root和结点的值int p,请返回值为p的结点的后继结点的值,保证结点的值大于等于零小于等于100000且没有重复值,若不存在后继返回-12. 对于一棵二叉搜索树的节点的定义一般是具有parent指针的,像下面这样:public class TreeN...原创 2019-02-07 22:34:19 · 314 阅读 · 0 评论 -
中序遍历的总结
1. 对于二叉搜索树的遍历的操作中使用典型的方法是中序遍历,中序遍历对于一棵树的遍历是先遍历左子树,然后根,最右子树并且中序遍历有递归形式有非递归形式,我们知道一棵树是递归定义的,所以对于树的遍历操作中当然可以使用递归的方法来进行遍历,而且使用递归的方式来进行遍历的话代码很简洁而且递归使用的是隐式的栈,所以我们可以自己模仿递归的过程借助栈来实现非递归形式的递归,可以自己画出一棵二叉搜索树来...原创 2019-02-07 23:13:35 · 3772 阅读 · 0 评论 -
输出先序遍历二叉树的第k个节点
1. 问题描述:输出先序遍历二叉树的第k个节点2. 思路分析:因为先序遍历是按照先访问根节点,假如有左孩子的话访问左孩子,有有孩子的话访问右孩子,,所以我们可以在一进入递归方法里面就对访问的节点进行计数,计数之后判断是否等于k,假如等于了那么输出结果然后return就好了,假如改为中序遍历或者是后序遍历那么也是一样的,只需要将将count计数变量和判断的代码移动到相应的位置即可3....原创 2019-06-08 19:03:56 · 3783 阅读 · 0 评论 -
求解二叉树的宽度
1. 问题描述:假设二叉树采用二叉链表存储结构存储,设计一个算法,求解出二叉树的宽度(具有节点数目最多的那一层的节点个数)2. 思路分析:① 首先我们可以这样想求解出二叉树中节点数目最多的那一层的节点数目,那么我们需要求解出每一层的节点的数目是多少,取其中的最大值即可② 但是给定的二叉树使用的是二叉链表存储结构存储的,二叉链表存储结构中存在三个变量,一个是当前节点的左孩子,一个是当前节...原创 2019-06-08 20:13:28 · 2214 阅读 · 0 评论 -
二叉树的前序遍历非递归算法
1. 对于树的遍历我们最常用的三种遍历方法分别是前序遍历、中序遍历和后序遍历,使用的方法是深度优先遍历树的每一个节点,这些遍历方法都是使用递归函数来进行实现的,在数据量大的情况下是比较低效的,原因在于系统帮助我们调用了一个栈并且做了诸如保护现场和恢复现场等复杂的操作,才使得遍历可以使用非常简单的代码来实现,所以我们可以模仿系统中调用的栈自己可以来写一下栈,模仿其中的过程就可以完成对于三种遍历算法的...原创 2019-06-03 11:06:10 · 10774 阅读 · 0 评论 -
前缀树的简单实现
1. 前缀树前缀树又称为单词查找树,是一种树形的结构,用于存储大量的字符串,它的优点是:利用字符串的公共前缀来节约存储空间Trie树主要是利用词的公共前缀缩小查词范围、通过状态间的映射关系避免了字符的遍历,从而达到高效检索的目的2. 可以先声明一个节点TrieNode,节点包括以下几个属性:TrieNode children[] = new TrieNode[26];TrieNo...原创 2019-02-05 11:34:00 · 4835 阅读 · 0 评论