• 【Offer】[54] 【二叉搜索树的第k小节点】


    题目描述

      给定一棵二叉搜索树,请找出其中第k小的节点。例如,在下图的二叉搜索树里,按节点数值大小顺序,第三小节点的值是4。

    牛客网刷题地址

    思路分析

      二叉树的中序遍历,要注意的地方,要设置一个全局的索引index来记录遍历到第几个元素

    测试用例

    1. 功能测试:各种形态不同的二叉搜索树。
    2. 边界值测试:输入k为0、1、二叉搜索树的节点数、二叉搜索树的节点数加1。
    3. 特殊输入测试:指向二叉搜索树根节点的指针为nullptr 指针。

    Java代码

    public class Offer054 {
        public static void main(String[] args) {
            test1();
            test2();
            test3();
            
        }
    
        public static TreeNode KthNode(TreeNode pRoot, int k) {
            return Solution1(pRoot,k);
        }
    
    
        private static TreeNode Solution1(TreeNode pRoot, int k) {
            if(pRoot==null || k==0) {
                return null;
            }
            return KthNodeCore(pRoot,k);
        }
    
        static int index = 0;
        private static TreeNode KthNodeCore(TreeNode pRoot, int k) {
            TreeNode target = null;
            
            if(pRoot.left!=null) {
                target = KthNodeCore(pRoot.left, k);
            }
            if(target== null) {
                index ++ ;
                if(k==index) {
                    target=pRoot;
                }
            
            }
            
            if(target==null && pRoot.right!=null) {
                target = KthNodeCore(pRoot.right, k);
            }
            
            return target;
        }
    
        private static void test1() {
    
        }
    
        private static void test2() {
    
        }
        private static void test3() {
    
        }
    
    }
    

    代码链接

    剑指Offer代码-Java

  • 相关阅读:
    SNOI 2019 字符串
    1068: [SCOI2007]压缩
    POJ 1848 Tree 树形DP
    BZOJ bzoj1396 识别子串
    BZOJ 4503: 两个串
    BZOJ 2302: [HAOI2011]Problem c(数学+DP)
    BZOJ 3157: 国王奇遇记 (数学)
    CF_528D
    BZOJ 3000: Big Number (数学)
    新の开始
  • 原文地址:https://www.cnblogs.com/haoworld/p/offer54-er-cha-sou-suo-shu-de-dik-xiao-jie-dian.html
Copyright © 2020-2023  润新知