1: /**
2: * Definition for a binary tree node.
3: * struct TreeNode {
4: * int val;
5: * TreeNode *left;
6: * TreeNode *right;
7: * TreeNode(int x) : val(x), left(NULL), right(NULL) {}
8: * };
9: */
10: class Solution {
11: public:
12: TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
13: TreeNode *successor = NULL;
14: while (root) {
15: if (root->val == p->val) {
16: if (root->right == NULL) return successor;
17: else {
18: root = root->right;
19: while (root->left) root = root->left;
20: return root;
21: }
22: } else if (root->val < p->val) {
23: root = root->right;
24: } else {
25: successor = root;
26: root = root->left;
27: }
28: }
29: return NULL;
30: }
31: };
Sunday, August 14, 2016
285. Inorder Successor in BST
It's very easy to miss the case that when we go into left subtree, current root become the successor.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment