# Definition for a binary tree node.# class TreeNode:# def __init__(self, x):# self.val = x# self.left = None# self.right = NoneclassSolution:definorderSuccessor(self,root:"TreeNode",p:"TreeNode")->"TreeNode":ans=Nonewhileroot:ifroot.val>p.val:ans=rootroot=root.leftelse:root=root.rightreturnans
1 2 3 4 5 6 7 8 91011121314151617181920212223
/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */classSolution{publicTreeNodeinorderSuccessor(TreeNoderoot,TreeNodep){TreeNodeans=null;while(root!=null){if(root.val>p.val){ans=root;root=root.left;}else{root=root.right;}}returnans;}}
1 2 3 4 5 6 7 8 9101112131415161718192021222324
/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode(int x) : val(x), left(NULL), right(NULL) {} * }; */classSolution{public:TreeNode*inorderSuccessor(TreeNode*root,TreeNode*p){TreeNode*ans=nullptr;while(root){if(root->val>p->val){ans=root;root=root->left;}else{root=root->right;}}returnans;}};
1 2 3 4 5 6 7 8 910111213141516171819
/** * Definition for a binary tree node. * type TreeNode struct { * Val int * Left *TreeNode * Right *TreeNode * } */funcinorderSuccessor(root*TreeNode,p*TreeNode)(ans*TreeNode){forroot!=nil{ifroot.Val>p.Val{ans=rootroot=root.Left}else{root=root.Right}}return}