![](https://img-blog.csdnimg.cn/20210127220629781.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
树
树
素净小凡人
一个在后端路上的小程序猿
展开
-
二叉树中是否存在节点和为指定值的路径(JAVA)
题目描述 给定一个二叉树和一个值\ sum sum,判断是否有从根节点到叶子节点的节点值之和等于\ sum sum 的路径, 例如: 给出如下的二叉树, sum=22 返回true,因为存在一条路径 5→4→11→2的节点值之和为 22 示例1 输入 {1,2},0 返回值 false 示例2 输入 {1,2},3 返回值 true 直接看代码吧 /** * @Description: * @ClassName algorithm * @Author: 王瑞文 * @Da原创 2021-01-16 23:01:51 · 328 阅读 · 0 评论 -
二叉树的合并(JAVA)
题目描述 已知两颗二叉树,将它们合并成一颗二叉树。合并规则是:都存在的结点,就将结点值加起来,否则空的位置就由另一个树的结点来代替。例如: 两颗二叉树是: Tree 1 : 1 / \ 3 2 / 5 Tree 2: 2 / \ 1 3 \ \ 4 7 合并后的树为 3 / \ 4 5 / \ \ 5 4 7 示例1 输入 {1,3,2,5},{2,1,3,#,4,#,7} 返回值 {3,4,5,5,4,#,7} 博主本来想的很复杂,就是区递归查询一下有没有原创 2021-01-15 22:04:57 · 840 阅读 · 0 评论 -
重建二叉树(JAVA实现)
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。例如输入前序遍历序列{1,2,3,4,5,6,7}和中序遍历序列{3,2,4,1,6,5,7},则重建二叉树并返回。 解题思路 前序遍历的一个结果是根节点。这样可以根据中序遍历中根节点的位置将二叉树分成两个字树(左子树、右子树),利用递归的思想可以解决这个问题。 实现代码: /** * @Description: * @ClassName algorithm * @Author:原创 2021-01-14 21:30:54 · 351 阅读 · 0 评论 -
二叉树的深度
输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。 示例1 输入 {1,2,3,4,5,#,6,#,#,7} 输出 4 废话少说直接上代码 节点: public class TreeNode { public int val = 0; public TreeNode left = null; public TreeNode right = null; public TreeNode(int val)原创 2021-01-13 22:22:34 · 297 阅读 · 0 评论 -
JAVA手写红黑树
既然我们需要手写红黑树,那么我们能就要高清书什么是红黑树 红黑树(Red Black Tree)是一种自平衡二叉查找树,是在计算机与科学用到的一种数据结构,典型的用途是实现关联数组 基本特征 每个节点不是红色就是黑色 不可能有连在一起的红色节点 根节点都是黑色 每个红色节点的两个子节点都是黑色 接下我我们欣赏一颗红黑树 红黑树变换规则: 改变节点颜色 左旋转 右旋转 变色 适用于: 当前父节点是红色且他的祖父节点(父亲的父亲)的另一个子节点也是红色(叔叔节点) 规则: 将父亲节点设置为黑色原创 2021-01-13 17:08:51 · 821 阅读 · 5 评论 -
JAVA手写二叉搜索树
二叉搜索树的概念 二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。二叉搜索树作为一种经典的数据结构,它既有链表的快速插入与删除操作的特点,又有数组快速查找的优势;所以应用十分广泛,例如在文件系统和数据库系统一般会采用这种数据结构进行高效率的排序与检索操作。 -来自百原创 2021-01-13 15:30:16 · 369 阅读 · 0 评论 -
二叉树的镜像
我们先看一道题 题目描述 操作给定的二叉树,将其变换为源二叉树的镜像。 输入描述: 二叉树的镜像定义:源二叉树 8 / \ 6 10 / \ / \ 5 7 9 11 镜像二叉树 8 / \ 10 6 / \ / \ 11 9 7 5 拿到这道题首先肯定想的就是把8的左右子树变换一下位置就可以了于是开始写代码 public stati原创 2021-01-11 22:24:32 · 258 阅读 · 0 评论 -
二叉树的遍历
二叉树的遍历主要有三种: (1)先(根)序遍历(根左右) (2)中(根)序遍历(左根右) (3)后(根)序遍历(左右根) 举个例子: 先(根)序遍历(根左右):A B D H E I C F J K G 中(根)序遍历(左根右) : D H B E I A J F K C G 后(根)序遍历(左右根) : H D I E B J K F G C A 下面给出一道题: 题目描述 分别按照二叉树先序,中序和后序打印所有的节点。 输入 {1,2,3} 返回值 [[1,2,3],[2,1,3],[2,3,1]原创 2021-01-10 21:57:12 · 257 阅读 · 0 评论