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

    }

    }

  • 相关阅读:
    Python发邮件的小脚本
    收集服务器网卡和IP信息
    Parent Proxy 和 Origin Server配置学习
    ATS 自定义日志格式
    css之选择器篇
    css之入门篇
    javascript必须懂之冒泡事件
    HTML5之语义化标签
    HTML之总结
    随堂笔记之正则与HTML5新元素
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12552911.html
Copyright © 2011-2022 走看看