Given a binary search tree and a node in it, find the in-order successor of that node in the BST. Note: If the given node has no in-order successor in the tree, return null.
1 /** 2 * Definition for a binary tree node. 3 * public class TreeNode { 4 * int val; 5 * TreeNode left; 6 * TreeNode right; 7 * TreeNode(int x) { val = x; } 8 * } 9 */ 10 public class Solution { 11 public TreeNode inorderSuccessor(TreeNode root, TreeNode p) { 12 ArrayList<TreeNode> prev = new ArrayList<TreeNode>(); 13 ArrayList<TreeNode> res = new ArrayList<TreeNode>(); 14 prev.add(null); 15 res.add(null); 16 inorder(root, p, prev, res); 17 return res.get(0); 18 } 19 20 public void inorder(TreeNode root, TreeNode p, ArrayList<TreeNode> prev, ArrayList<TreeNode> res) { 21 if (root == null) return; 22 inorder(root.left, p, prev, res); 23 if (prev.get(0) == p) { 24 res.set(0, root); 25 } 26 prev.set(0, root); 27 inorder(root.right, p, prev, res); 28 } 29 }
Leetcode: Inorder Successor in BST
原文:http://www.cnblogs.com/EdwardLiu/p/5077532.html