230. 二叉搜索树中第K小的元素 --力扣 --JAVA
题目 解题思路 利用List存储数据;遍历整个树,读取数各个节点的value;对value进行排序,获取第k个最小值。 代码展示 class Solution { private List<Integer> list = new ArrayList<>(); public int kthSmallest(TreeNode root, int k) { getVal(root); list.sort(n...
【LeetCode刷题-树】-- 107.二叉树的层序遍历II
107.二叉树的层序遍历II /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int va...
114. 二叉树展开为链表 --力扣 --JAVA
题目 解题思路 通过递归先序遍历树;用List存储遍历后的结点;遍历List重组链表。 代码展示 class Solution { private List<TreeNode> list = new ArrayList<>(); public void flatten(TreeNode root) { if(root == null){ return; } nextNode(root); root =...
105. 从前序与中序遍历序列构造二叉树 --力扣 --JAVA
题目 解题思路 先序遍历:根左右;中序遍历:左根右;从先序遍历中确定根节点,再从中序遍历中判断左右子树的长度范围,从而确定左右子树的根节点。 代码展示 class Solution { public TreeNode buildTree(int[] preorder, int[] inorder) { int size = preorder.length; Map<Integer,Integer> s...
102. 二叉树的层序遍历 --力扣 --JAVA
题目 解题思路 利用Map以层级作为key进行初始数据存储,最后再遍历Map存储结果到List中;添加当前节点到当前层级,通过递归传递层级到下一层即当前节点的左右子树; 代码展示 class Solution { private Map<Integer,List<Integer>> levelMap = new TreeMap<>(); public List<List<Integer>> level...
98. 验证二叉搜索树 --力扣 --JAVA
题目 解题思路 需要当前节点的值和父节点作比较,所以基础方法无法满足需要对方法进行重载或建立新的函数;val的值超出Integer.MAX_VALUE所以需要通过Long的最大最小值来进行初始化赋值;循环结束条件,当前节点为空;限定当前节点val的取值范围,并进行递归循环。 代码展示 class Solution { public boolean isValidBST(TreeNode root) {...
【LeetCode】每日一题 2023_12_4 从二叉搜索树到更大和树(二叉树)
文章目录 刷题前唠嗑题目:从二叉搜索树到更大和树题目描述代码与解题思路 结语 刷题前唠嗑 LeetCode?启动!!! 题目:从二叉搜索树到更大和树 题目链接:1038. 从二叉搜索树到更大和树 题目描述 代码与解题思路 这道题题目描述可能比较模糊,直接看题目给的样例就行,不管他本身是一棵什么树,直接从他的最右节点开始看: 然后你发现他的节点值和蓝字的值是一样的,节点的值是树当前的值,蓝字的值是我们...
二叉树k层的叶子结点个数
文章目录 1 题目2 思路2.1 思路12.2 思路2 3 代码实现3.1 思路13.2 思路23.3 完整的代码案例 1 题目 假设二叉树采用二叉链表存储结构,设计一个算法求其指定的第k层(k>1,跟是第1层)的叶子结点个数。 2 思路 2.1 思路1 设置一个全局变量记录某层叶子结点个数,前序遍历二叉树,并在遍历的过程中记录结点的层数。 2.2 思路2 层序遍历二叉树,记录某层的二叉树叶子结点个...
【LeetCode刷题-树】--144.二叉树的前序遍历
144.二叉树的前序遍历 /** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode() {} * TreeNode(int val) { this.val = val; } * TreeNode(int val,...
【LeetCode刷题(数据结构与算法)】:将二叉搜索树转化为排序的双向链表
将一个 二叉搜索树 就地转化为一个 已排序的双向循环链表 对于双向循环列表,你可以将左右孩子指针作为双向循环链表的前驱和后继指针,第一个节点的前驱是最后一个节点,最后一个节点的后继是第一个节点 特别地,我们希望可以 就地 完成转换操作。当转化完成以后,树中节点的左指针需要指向前驱,树中节点的右指针需要指向后继。还需要返回链表中最小元素的指针 示例 1: 输入:root = [4,2,5,1,3] 输...