**LeetCode-Inorder Successor in BST
2015-10-22 08:23
483 查看
简直想不清楚!!!
iterative:
TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
TreeNode* candidate = NULL;
while (root)
root = (root->val > p->val) ? (candidate = root)->left : root->right;
return candidate;
}
recursive:
public TreeNode successor(TreeNode root, TreeNode p) {
if (root == null)
return null;
if (root.val <= p.val) {
return successor(root.right, p);
} else {
TreeNode left = successor(root.left, p);
return (left != null) ? left : root;
}
}
predecessor
public TreeNode predecessor(TreeNode root, TreeNode p) {
if (root == null)
return null;
if (root.val >= p.val) {
return predecessor(root.left, p);
} else {
TreeNode right = predecessor(root.right, p);
return (right != null) ? right : root;
}
}
iterative:
TreeNode* inorderSuccessor(TreeNode* root, TreeNode* p) {
TreeNode* candidate = NULL;
while (root)
root = (root->val > p->val) ? (candidate = root)->left : root->right;
return candidate;
}
recursive:
public TreeNode successor(TreeNode root, TreeNode p) {
if (root == null)
return null;
if (root.val <= p.val) {
return successor(root.right, p);
} else {
TreeNode left = successor(root.left, p);
return (left != null) ? left : root;
}
}
predecessor
public TreeNode predecessor(TreeNode root, TreeNode p) {
if (root == null)
return null;
if (root.val >= p.val) {
return predecessor(root.left, p);
} else {
TreeNode right = predecessor(root.right, p);
return (right != null) ? right : root;
}
}
相关文章推荐
- iOS面试整理
- 【状压bfs】ctsc 1999 补丁vs错误
- sdwebimage如何获取缓存大小以及清除缓存
- HA集群之二:部署HA wordpress Cluster
- 微服务年度总结,看完这个你应该知道如何回答别人的问题了。
- mysql 不能插入中文和显示中文
- 矩阵算法 高斯消元 行列式 矩阵的秩
- 关于ExecuteNonQuery()执行成功却返回-1的问题
- 按位与运算符
- App 快速上架经验
- JSON对象长度和遍历方法-前端开发博客
- 价格改革确立时间表和路线图 六大重点领域破题
- iOS --- 音量调节视图MPVolumeView的使用
- 事件对象详解
- Iterator
- IE input file隐藏不能上传文件解决方法
- 如何从上位机或者触摸屏设定Time或S5Time值?
- OC多个形参
- OC学习笔记之Block基础知识
- Online random forest