LeetCode 二叉树高频双题绝杀!第 k 小元素 + 右视图,小白一遍学会
目录前言第一题二叉搜索树中第 K 小的元素 题目要求 小白秒懂核心思路✅ 完整解题代码 通俗代码解析第二题二叉树的右视图 题目要求 小白秒懂核心思路✅ 完整解题代码 通俗代码解析 两道题终极口诀秒记二叉搜索树第 k 小元素二叉树右视图总结前言二叉树刷题不用死记硬背今天这两道题是大厂笔试面试高频原题一个靠中序遍历秒杀一个靠层序遍历通关代码极简、思路直白看完直接能默写新手也能轻松拿捏第一题二叉搜索树中第 K 小的元素 题目要求给定一个二叉搜索树找出其中第 k 小的元素。注意你可以假设 k 总是有效的1 ≤ k ≤ 二叉搜索树元素个数。 小白秒懂核心思路二叉搜索树有一个黄金定律中序遍历左→根→右的结果 严格升序数组所以解题超级简单对树做中序遍历把节点值按从小到大收集第 k 小的元素 集合中下标为 k-1的元素一步到位无任何复杂逻辑✅ 完整解题代码java运行/** * 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, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { // 集合收集中序遍历结果升序排列 ListInteger listnew ArrayList(); public int kthSmallest(TreeNode root, int k) { // 中序遍历从小到大收集所有元素 travle(root); // 返回第k小的元素下标k-1 return list.get(k-1); } // 中序遍历左子树 - 根节点 - 右子树 public void travle(TreeNode root){ if(rootnull) return; // 遍历左子树 travle(root.left); // 加入当前节点 list.add(root.val); // 遍历右子树 travle(root.right); } } 通俗代码解析中序遍历二叉搜索树自动得到升序序列把所有节点值存进集合直接通过下标获取第 k 小元素代码短短几行逻辑一目了然面试写这个最快最稳第二题二叉树的右视图 题目要求给定一个二叉树想象你站在它右侧从上到下返回你能看到的节点值。 小白秒懂核心思路右视图 每一层最右边的节点用层序遍历BFS完美解决按层遍历二叉树一层一层处理每一层只保留最后一个节点的值收集所有层的最后节点就是右视图结果✅ 完整解题代码java运行/** * 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, TreeNode left, TreeNode right) { * this.val val; * this.left left; * this.right right; * } * } */ class Solution { public ListInteger rightSideView(TreeNode root) { // 存储最终右视图结果 ListInteger resultnew ArrayList(); // 队列实现层序遍历 QueueTreeNode quenew LinkedList(); // 空树直接返回 if(rootnull) return result; // 根节点入队 que.offer(root); // 开始层序遍历 while(!que.isEmpty()){ // 记录当前层的节点个数 int sizeque.size(); // 遍历当前层所有节点 for(int i0;isize;i){ TreeNode nodeque.poll(); // 只加入每层最后一个元素右视图 if(isize-1){ result.add(node.val); } // 左节点入队 if(node.left!null){ que.offer(node.left); } // 右节点入队 if(node.right!null){ que.offer(node.right); } } } return result; } } 通俗代码解析用队列实现层序遍历一层一层处理节点用size记录当前层的节点数量遍历当前层时只有最后一个节点加入结果集最终得到的就是二叉树的右视图简单粗暴零出错 两道题终极口诀秒记二叉搜索树第 k 小元素中序遍历升序排第 k 小值下标 k-1二叉树右视图层序遍历按层走每层最后都收入总结这两道题是二叉树刷题的基础必做题一个考察中序遍历一个考察层序遍历都是二叉树最核心的遍历方式代码简洁、思路清晰学会这两道二叉树遍历题型直接拿下一半刷算法效率拉满
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2480423.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!