• [LeetCode]230. 二叉搜索树中第K小的元素(BST)(中序遍历)、530. 二叉搜索树的最小绝对差(BST)(中序遍历)


    题目230. 二叉搜索树中第K小的元素

    给定一个二叉搜索树,编写一个函数 kthSmallest 来查找其中第 k 个最小的元素。

    题解

    中序遍历BST,得到有序序列,返回有序序列的k-1号元素。

    代码

    class Solution {
        public int kthSmallest(TreeNode root, int k) {
            List<Integer> list = new LinkedList<>();
            inorder(root,list);
            return list.get(k-1);
        }
    
        public void inorder(TreeNode root, List<Integer> list){
            if(root == null){return;}
            inorder(root.left,list);
            list.add(root.val);
            inorder(root.right,list);
        }
    }
    

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

    给你一棵所有节点为非负值的二叉搜索树,请你计算树中任意两节点的差的绝对值的最小值。

    题解

    • 差值的绝对值最小,一定是中序遍历的相邻两节点。
    • 参数传pre节点值+中序遍历即可 //代码中之接将pre节点值作为变量更新

    代码

    ``
    class Solution {
    private int min=Integer.MAX_VALUE;
    private int preNodeVal = -1;
    public int getMinimumDifference(TreeNode root) {
    dfs(root);
    return min;
    }

    public void dfs(TreeNode root){
        if(root==null){
            return;
        }
    
        dfs(root.left);
        
        if(preNodeVal!=-1){
            min=Math.min(Math.abs(root.val-preNodeVal),min);
        }
        preNodeVal=root.val;
    
        dfs(root.right);
    }
    

    }
    ``

  • 相关阅读:
    人月神话阅读笔记01
    个人每日总结14
    个人每日总结13
    个人每日总结12
    个人每日总结11
    个人每日总结10
    个人每日总结9
    第五周学习进度表
    梦断代码阅读笔记
    05构建之法阅读笔记之五
  • 原文地址:https://www.cnblogs.com/coding-gaga/p/13046723.html
Copyright © 2020-2023  润新知