题解 | #二叉搜索树的第k个结点#

二叉搜索树的第k个结点

http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a

代码思路:因为二叉搜索树的中序遍历是升序的,因此采用中序遍历,遍历结果用ist保存
根据第k小,可取list.get(k-1);
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;
        return Inorder(pRoot,k);
    }
     public TreeNode Inorder(TreeNode root, int k)
     {
         List<TreeNode> list = new ArrayList<TreeNode>();
         Stack<TreeNode> stack = new Stack<TreeNode>();
         TreeNode node = null;
         while(root!=null || !stack.isEmpty())
         {
             while(root != null)
             {
                 stack.push(root);
                 root = root.left;
             }
             if(!stack.isEmpty())
             {
                 root = stack.pop();
                 list.add(root);
                 root = root.right;
             }
         }
         return k <= list.size() ? list.get(k-1) : null;
     }
}


全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务