![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构冲呀!
我是一只小怪兽
某一本努力学习的小菜鸡
展开
-
填充每个节点的下一个右侧节点指针java
填充每个节点的下一个右侧节点指针 题目 跳转到原题目 思路1 刚看到这道题目的时候,就想到了之前做的树的层序遍历-广度优先搜索,操作都是以“层”为单位,通过广度优先遍历将一层的节点联系起来。因此就直接对层序遍历的代码进行修改。 代码1 /* // Definition for a Node. class Node { public int val; public Node left; public Node right; public Node next; pub原创 2020-10-06 15:50:00 · 119 阅读 · 0 评论 -
从前序和中序遍历序列构造二叉树java代码
从前序和中序遍历序列构造二叉树 题目 思路 这道题思路和之前做过的中序+后序遍历构造二叉树(点击即可跳转)基本类似,唯一不同的是,前序遍历所得数据的第一个是根节点,其他都相似,这里就不再赘述了。 代码 // Definition for a binary tree node. public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } } c原创 2020-10-06 14:51:13 · 181 阅读 · 0 评论 -
中序+后序构造二叉树java代码
中序+后序构造二叉树 题目 思路 在拿到题目的时候,我们应该先分析中序和后序遍历的特点,由于中序:左中右,后序:左右中,我们可以知道以下两点 1. 后序的最后一个结点是根节点 2. 中序知道了根节点,那么左右两边就是左右子树 从上面两点我们找到思路,我们先从后序遍历入手,每一个后序遍历的最后一个结点就是根节点,由根节点将中序遍历的数据划分为左右子树,再通过递归,找出左右子树的父亲结点,又由父亲结点将剩下的数据继续划分为左右子树。 代码 /** * Definition for a binary tree原创 2020-10-06 11:05:14 · 379 阅读 · 1 评论 -
求树的路径总和java代码
求树的路径总和 题目 思路 先判断root是否为null,如果是的话直接返回false 明白返回为true的条件: (1)结点值刚好等于剩下sum值 (2)该结点是叶子,即没有左右孩子 以上两点需要同时满足 递归,需要判断root结点的左右孩子是否存在这样的结点,同时传入的参数sum=sum-root.val 代码 /** * Definition for a binary tree node. * public class TreeNode { * int val; *原创 2020-10-05 19:46:41 · 169 阅读 · 0 评论 -
通过递归判断对称二叉树java代码
通过递归判断对称二叉树 题目 方法 判断根节点是否为null,是的话就直接返回true 构造一个判断两个结点是否对称的方法,参数(node1,node2) 清楚递归结束的三种可能性: (1)两个结点都是null,返回true (2)其中一个结点是null. ,发挥false (3)两个值不相等,返回false 需要判断node1.left?=node2.right, node1.right?=node2.left,因此递归调用对称方法,分别传入(node1.left,node2.ri原创 2020-10-05 19:21:09 · 112 阅读 · 0 评论 -
求二叉树的最大深度
求二叉树最大深度 自定向下求法 1.添加一个自变量保存最后的深度值answer 2.构造方法,参数是(root,最深深度depth) 3.判断root是否存在,不存在就返回 4.如果root没有左右孩子,就判断之前保存的深度值answer与该支链上的深度值depth哪个大,将更大的值赋值给answer 5.如果root有左右孩子,就递归下一个结点 6.一直到root不存在,返回answer private int answer; // don't forget to initialize answer转载 2020-10-05 18:18:43 · 126 阅读 · 0 评论 -
树的层序遍历-广度优先搜搜-java代码
前言 广度优先搜索是一种广泛运用在树或图这类数据结构中,遍历或搜索的算法。 该算法从一个根节点开始,首先访问节点本身。 然后遍历它的相邻节点,其次遍历它的二级邻节点、三级邻节点。 当我们在树中进行广度优先搜索时,我们访问的节点的顺序是按照层序遍历顺序的。 一、题目 题目来源于leedcode 二、步骤 首先创建一个列表存放最终结果,创建一个队列存放结点 判断根节点是否为空,不为空则根结点入队列 while循环判断队列是否有数据,当队列里有数据时,获取结点个数(可以知道这一层有几个数据) 创建一个列表,存原创 2020-10-05 15:28:32 · 122 阅读 · 0 评论 -
树的前序中序后序遍历java代码
@[TOC]树的遍历 前文 本人是通过leedcode学习数据结构的,边学边练,因此大部分题目也都来源于leedcode 今天贴上的是最简单的树遍历的java代码,其实代码部分都是相似的,先创建一个result(list)来存放结果,通过不同遍历方式去安排结点的遍历与数据存放的顺序. 前序遍历 :中——左——右 /** 2. Definition for a binary tree node. 3. public class TreeNode { 4. int val; 5. T原创 2020-10-05 13:06:05 · 418 阅读 · 0 评论