【算法】求二叉搜索树的第K个结点

来源:互联网 发布:ubuntu 卸载自带jdk 编辑:程序博客网 时间:2024/05/17 03:21

题目描述

给定一颗二叉搜索树,请找出其中的第k大的结点。
分析:

已知二叉搜索树的中序遍历就是有序序列,因此使用中序遍历思想(可递归,也可不递归),访问第K个结点即为所求的第K大的结点。


/*public class TreeNode {    int val = 0;    TreeNode left = null;    TreeNode right = null;    public TreeNode(int val) {        this.val = val;    }}*/import java.util.Stack;public class Solution {   TreeNode KthNode(TreeNode pRoot, int k)        {        if(pRoot==null||k<0){        return null;        }        int count=0;        Stack<TreeNode> s=new Stack<TreeNode>();        while(pRoot!=null||!s.isEmpty()){                if(pRoot!=null){        s.push(pRoot);        pRoot=pRoot.left;        }else{        TreeNode t=s.pop();        count++;        if(count==k)        return t;        pRoot=t.right;        }                }        return null;                }}

原创粉丝点击