zoukankan      html  css  js  c++  java
  • 64.二叉搜索树的第K个节点

    题目描述:

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

    思路分析:

      根据二叉搜索树的特殊性,我们中序遍历它所产生的序列就是有序序列,所以中序遍历到的第K个点就是第K小的节点。

    代码:

    import java.util.*;
    /*
    public class TreeNode {
        int val = 0;
        TreeNode left = null;
        TreeNode right = null;
    
        public TreeNode(int val) {
            this.val = val;
    
        }
    
    }
    */
    public class Solution {
        /*
        用非递归的方式实现中序遍历
        */
        TreeNode KthNode(TreeNode pRoot, int k)
        {
            if(pRoot==null||k<0)
                return null;
            TreeNode pNode=pRoot;
            Stack<TreeNode>s=new Stack<>();
            int count=0;
            while(pNode!=null||!s.isEmpty()){
                while(pNode!=null){
                    s.push(pNode);
                    pNode=pNode.left;
                }
                if(!s.isEmpty()){
                    pNode=s.pop();
                    count++;
                    if(count==k)
                        return pNode;
                    pNode=pNode.right;
                }
            }
            return null;
        }
    
    
    }
    
  • 相关阅读:
    Skimage=scikit-image SciKit 包的模块(转载)
    python day12
    python day11
    python day10
    python day9
    python day8
    python day7
    python day6
    python 第五天
    python 第四天
  • 原文地址:https://www.cnblogs.com/yjxyy/p/10962599.html
Copyright © 2011-2022 走看看