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: };
Showing posts with label successor. Show all posts
Showing posts with label successor. Show all posts
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:
Posts (Atom)