zoukankan      html  css  js  c++  java
  • 剑指offer 62.二叉搜索树的第k个结点

    剑指offer 62.二叉搜索树的第k个结点

    题目

    给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

    思路

    二叉搜索树的中序遍历是递增的,找到第k小的话,那就只需要中序遍历即可,遍历的第k个数就是所需的数。

    代码

      public class TreeNode {
    
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
          this.val = val;
    
        }
    
      }
    
      TreeNode KthNode(TreeNode pRoot, int k) {
        if(pRoot == null || k == 0) {
          return null;
        }
        int count = 0;
        Stack<TreeNode> stack = new Stack<>();
        while (pRoot != null || ! stack.isEmpty()) {
          while (pRoot != null) {
            stack.push(pRoot);
            pRoot = pRoot.left;
          }
          pRoot = stack.pop();
          count ++;
          if(count == k) {
            return pRoot;
          }
          pRoot = pRoot.right;
        }
        return null;
      }
    
  • 相关阅读:
    hdu1069
    hdu1068
    假脱机
    什么是数据的备份与恢复
    DNS(Domain Name System) 域名系统
    Deepnet
    deepweb
    异地备份
    冷备份和热备份
    备份
  • 原文地址:https://www.cnblogs.com/blogxjc/p/12426481.html
Copyright © 2011-2022 走看看