劍指offer-二叉搜索樹的第k個節點

package 二叉搜索樹的第k個節點;


public class Problem52 {


static int index = 0; // 計數器


public  static TreeNode KthNode(TreeNode root, int k) {
if (root != null) { // 中序遍歷尋找第k個
TreeNode node = KthNode(root.left, k);
if (node != null)
return node;
index++;
if (index == k)
return root;
node = KthNode(root.right, k);
if (node != null)
return node;
}
return null;
}


public static void main(String[] args) {
TreeNode root = new TreeNode(5);
TreeNode left1 = new TreeNode(3);
TreeNode right1 = new TreeNode(7);
TreeNode left11 = new TreeNode(2);
TreeNode right12 = new TreeNode(4);
TreeNode left21 = new TreeNode(6);
TreeNode right22 = new TreeNode(8);
root.left = left1;
root.right = right1;
left1.left = left11;
left1.right = right12;
right1.left = left21;
right1.right = right22;
TreeNode node = KthNode(root, 3);
System.out.println(node.value);
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章