zoukankan      html  css  js  c++  java
  • 剑指Offer(Java版)第六十五题:给定一棵二叉搜索树,请找出其中的第k小的结点。 例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。

    /*
    给定一棵二叉搜索树,请找出其中的第k小的结点。
    例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。
    */
    /*
    二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树:
    若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值
    */
    //思路:从最左边的叶子节点开始找起。

    import java.util.*;

    public class Class65 {

    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;
    }
    Stack<TreeNode> stack = new Stack<TreeNode>();
    int count = 0;
    TreeNode node = pRoot;
    do{
    if(node != null){
    stack.push(node);
    node = node.left;
    }else{ //已经到达最左的叶子节点
    node = stack.pop();
    count++;
    if(count == k){
    return node;
    }
    node = node.right;
    }
    }while(node != null || !stack.isEmpty());
    return null;
    }

    public static void main(String[] args) {
    // TODO Auto-generated method stub

    }

    }

  • 相关阅读:
    php7垃圾回收机制
    PHP-FPM
    go main.main之前的准备
    ElementUI MessageBox 弹框
    ElementUI table 样式修改
    ElementUI Dropdown 下拉菜单
    vue+django实现下载文件
    ElementUI 点击展开/隐藏
    vue+django实现websocket连接
    ElementUI 上传文件以及限制
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12552911.html
Copyright © 2011-2022 走看看