首页 > 其他分享 >Day16 二叉树part06| LeetCode 530.二叉搜索树的最小绝对差 ,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先

Day16 二叉树part06| LeetCode 530.二叉搜索树的最小绝对差 ,501.二叉搜索树中的众数,236. 二叉树的最近公共祖先

时间:2024-09-16 18:12:41浏览次数:1  
标签:right TreeNode 二叉 搜索 二叉树 return null root left

530.二叉搜索树的最小绝对差

530. 二叉搜索树的最小绝对差

class Solution {
        public  List<Integer>  res = new ArrayList<>();
       
        void traversal(TreeNode root)
        {
            if(root==null) return ;

            traversal(root.left);
            res.add(root.val);
            traversal(root.right);
        }
        public int getMinimumDifference(TreeNode root) {

            traversal(root);
            if(res.size()<2)
            {
                return 0;
            }
              int minVal=Integer.MAX_VALUE;
            for(int i=1;i<res.size();i++)
            {
             minVal=Math.min(minVal, res.get(i)-res.get(i-1));
            }

            return minVal;
        }
    }

501.二叉搜索树中的众数

501. 二叉搜索树中的众数

  class Solution {
        List<Integer> list=new ArrayList<>();
        int count=0;
        int MaxCount=0;
        TreeNode pre=null;

        public void find(TreeNode root)
        {
            if(root==null) return;
            //中序遍历
             find(root.left);
            //计数
            if(pre==null||root.val!=pre.val)
            {
                count=1;
            }
            else
            {
                count++;
            }
            //更新maxCount
            if(count>MaxCount)
            {
                MaxCount=count;
                list.clear();
                list.add(root.val);
            }
            else if(count==MaxCount)
            {
                //多个众数的情况
                list.add(root.val);
            }
            pre=root;
            find(root.right);
        }
        public int[] findMode(TreeNode root) {
            count=0;
            MaxCount=0;
            pre=null;
            find(root);

            int[] res=new int[list.size()];
            for(int i=0;i<res.length;i++)
            {
                res[i]=list.get(i);
            }
            return res;
        }
    }

236. 二叉树的最近公共祖先

236. 二叉树的最近公共祖先

 class Solution {
        public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) {

            if(root==null) return null;
            if(root==p||root==q) return root;//包含情况二
            //后序遍历:左右中
            TreeNode left=lowestCommonAncestor(root.left,p,q);
            TreeNode right=lowestCommonAncestor(root.right,p,q);
            if(left!=null&&right!=null)
            {
                return root;
            }
            if(left==null&&right!=null) return right;
            else if(left!=null&& right==null) return left;
            else
            {
                return null;
            }

        }
    }

标签:right,TreeNode,二叉,搜索,二叉树,return,null,root,left
From: https://www.cnblogs.com/FreeDrama/p/18416482

相关文章

  • 搜索
    1、BFS广度优先搜索一般用于地图的搜索遍历,最短路中的SPFA也是洛谷P1126机器人搬重物<1>对于面对方向的计算设四个方向分别为0,1,2,3转向的时候只需要(原方向代号+4±1)%4就可以得到转向后面对的新方向<2>对于每种状态,构建hash,在每次走后判断该种情况是否已经出现......
  • Day15 二叉树part05| LeetCode 654.最大二叉树,617.合并二叉树 ,700.二叉搜索树中的搜索
    654.最大二叉树654.最大二叉树classSolution{publicTreeNodeconstructMaximumBinaryTree(int[]nums){if(nums.length==1)//遍历到了叶子节点{returnnewTreeNode(nums[0]);}intmaxValue=nums[0......
  • Java-数据结构-二叉树-习题(二) (´▽`)ノ
    文本目录:❄️一、习题一(分层遍历):   ▶ 思路:    ▶代码:❄️二、习题二(二叉树的最近公共祖先):    ▶ 思路: ▶代码: ❄️三、习题三(从前序和中序遍历序列中构造二叉树):     ▶ 思路:  ▶代码:❄️四、习题四(从中序和后序遍历序列中构造二......
  • 使用 O(1) 额外内存删除二叉树
    这是一个naive的做法:voiddeleteTreeRec(TreeNode*root){if(root==NULL)return;deleteTreeRec(root->left);deleteTreeRec(root->right);cout<<"Deletingnode"<<root->data<<endl;deleteroot;}O(1)空......
  • 力扣热题100 - 二叉树:二叉搜索树中第 K 小的元素
    题目描述:题号:230给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从1开始计数)。解题思路:思路一:中序遍历二叉树+ 计数根据二叉搜索树的性质,中序遍历得到的节点的顺序是从小到大递增的。所以可以一边中序遍历,一边计数......
  • PanSoo盘搜,百度网盘、阿里云盘、夸克网盘、迅雷网盘UC网盘资源搜索神器-2024年好用的
    ......
  • 力扣热题100 - 二叉树:二叉树展开为链表
    题目描述:题号:114给你二叉树的根结点 root ,请你将它展开为一个单链表:展开后的单链表应该同样使用 TreeNode ,其中 right 子指针指向链表中下一个结点,而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。解题思路:思路一:前序遍历后......
  • 代码随想录算法训练营,9月16日 | 235. 二叉搜索树的最近公共祖先,701.二叉搜索树中的插
    235.二叉搜索树的最近公共祖先题目链接:235.二叉搜索树的最近公共祖先文档讲解︰代码随想录(programmercarl.com)视频讲解︰二叉搜索树的最近公共祖先日期:2024-09-16想法:相比于普通二叉树,二叉搜索树从上往下遍历,在qp中间的值的一定是公共祖先,而第一个则是最近,因为此时你在这个祖......
  • 禁忌搜索算法(TS算法)求解实例---旅行商问题 (TSP)
    目录一、采用TS求解TSP二、旅行商问题2.1实际例子:求解6个城市的TSP2.2==**求解该问题的代码**==2.3代码运行过程截屏2.4代码运行结果截屏(后续和其他算法进行对比)三、==如何修改代码?==3.1减少城市坐标,如下:3.2增加城市坐标,如下:四、禁忌搜索算法(TabuSearc......
  • C++数据结构-二叉树的三种遍历方法(进阶篇)
    1.遍历简介:树作为非线性数据结构,在我们取出数据时就需要设计遍历,所谓遍历,就是按照一定的规则性,将数据结构中的所有数据全部依次访问,而二叉树本身并不具有天然的全局次序,故为实现遍历,需通过在各节点与其孩子之间约定某种局部次序,间接地定义某种全局次序,这便是我们常规定的先序......