day7
Posted Ahh三七
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了day7相关的知识,希望对你有一定的参考价值。
1、530 二叉搜索树中的最小绝对差
-
思路:
- 二叉搜索树 ==> 中序遍历 ==> 有序序列
-
代码
class Solution private int res = Integer.MAX_VALUE; private TreeNode pre;//记录前一个结点 public void traversal(TreeNode node) if(node == null) return; traversal(node.left);//左 if(pre != null)//中 res = Math.min(res, node.val-pre.val); pre = node; traversal(node.right);//右 public int getMinimumDifference(TreeNode root) traversal(root); return res;
2、501 二叉搜索树中的众数
-
二叉搜索树 ==> 中序遍历 ==> 有序序列 ==> 比较当前节点和前一节点是否相等,来判断重复节点个数
-
class Solution ArrayList<Integer> resList; int count; int maxCount; TreeNode pre; public void traversal(TreeNode node) if(node == null) return; traversal(node.left); //左 //中 if(pre == null) count = 1; else if(pre.val == node.val) count++; else count = 1; pre = node; if(count == maxCount) resList.add(node.val); if(count > maxCount) maxCount = count; resList.clear(); resList.add(node.val); traversal(node.right); //右 return; public int[] findMode(TreeNode root) resList = new ArrayList<>(); maxCount = 0; count = 0; pre = null; traversal(root); int[] res = new int[resList.size()]; for(int i=0; i<resList.size(); i++) res[i] = resList.get(i); return res;
3、236 二叉树的最近公共祖先
-
找公共祖先 ==> 从下往上 ==> 后序遍历
-
递归三部曲
-
确定递归函数返回值以及参数
- 需要递归函数返回值,来告诉我们是否找到节点q或者p
- 还要返回最近公共节点,可以利用上题目中返回值是 TreeNode,那么如果遇到p或者q,就把q或者p返回,返回值不为空,就说明找到了q或者p。
-
确定终止条件
- 遇到空的话,因为树都是空了,所以返回空。
- 如果 root == q,或者 root == p,说明找到 q p ,则将其返回,这个返回值,后面在中节点的处理过程中会用到
-
确定单层递归逻辑
-
值得注意的是 本题函数有返回值,是因为回溯的过程需要递归函数的返回值做判断,但本题我们依然要遍历树的所有节点。
-
如果left 和 right都不为空,说明此时root就是最近公共节点。
如果left为空,right不为空,就返回right,说明目标节点是通过right返回的,反之依然。
-
class Solution public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) if(root==p || root==q || root==null) return root; TreeNode left = lowestCommonAncestor(root.left, p, q);//左 TreeNode right = lowestCommonAncestor(root.right, p, q);//右 if(left!=null && right!=null)//中 return root; else if(left==null && right!=null) return right; else if(left!=null && right==null) return left; else return null;
-
自学it18大数据笔记-第一阶段Java-day09-day10-day11-day12-day13-day14-day15
笔记为自学时随手记录,如有错误,欢迎指正,不胜感激!
笔记分享:自学it18大数据笔记-第一阶段Java-day09-day10-day11-day12--day13-day14-day15——会持续更新……
第一阶段Java-day03-day04见:http://t.cn/R65SR0f
第一阶段Java-day05-day06-day07-day08见:http://t.cn/R6cQpTt
day09笔记见下图:
day10笔记见下图:
day11笔记见下图:
day12笔记见下图:
day13笔记见下图:
day14笔记见下图:
day15笔记见下图:
以上是关于day7的主要内容,如果未能解决你的问题,请参考以下文章