Google演算法題:M-求二叉搜尋樹的第K小的數
阿新 • • 發佈:2018-12-24
給出一個二叉搜尋樹,寫出一個方法,求出樹中的第k小的數
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */ import java.util.*; class Solution { //中序遍歷-棧 public int kthSmallest(TreeNode root, int k){ if(root==null || k==0) return -1; Stack<TreeNode> s = new Stack<TreeNode>(); TreeNode node = root; int knum=0; s.add(node); while(node!=null || !s.isEmpty()){ //左邊入棧 while(node!=null){ s.add(node); node=node.left; } //相當於訪問極小點 node = s.pop(); knum++; if(knum==k){ return node.val; } node = node.right; } return -1; } }